[Java密码学] 2、简单加密,解密

Hello,大家好, 我是Shendi,这次给大家带来一系列密码学教程,这次讲一些简单的数据加密

要想实现数据加密我们得知道什么是数据

数据的底层都是字节

所以我们要实现加密,只需要修改源数据的字节就行了,例如我们想将hello world这个字符串加密,让别人看不懂,我们可以这样,这样再这样...

加密算法一 

/**
	 * -加密算法 插入加一算法
	 * -在字节数组的第二位插入1 第四位插入2 以此类推
	 * @param source 传递的字节数组
	 * @return 加密后的字节数组
	 */
	public static byte[] encryptInsertAddOne(byte[] source) {
		byte[] encrypt = new byte[(source.length << 1) - 1];
		encrypt[0] = source[0];
		for (int i = 1;i < source.length;i++) {
			encrypt[(i<<1)-1] = (byte) i;
			encrypt[i<<1] = source[i];
		}
		return encrypt;
	}
	/**
	 * -解密算法 插入加一算法
	 * @param encrypt 加密的字节数组
	 * @return 返回解密的字节数组
	 */
	public static byte[] decodeInsertAddOne(byte[] encrypt) {
		byte[] source = new byte[(encrypt.length >> 1) + 1];
		for (int i = 0;i < encrypt.length;i+=2) {
			source[i >> 1] = encrypt[i];
		}
		return source;
	}

原理是将字符串变成字节数组,然后在第一个字节和第二个字节中插入一个数字,

第二个和第三个字节中插入一个数字,这样加密可以做到不污染源数据...但是数据大小翻倍,而且并不是很安全

以下为使用此加密算法的hello world输出结果

加密算法二

/**
	 * -加密算法 加一算法 将所有字节加一 可和解密算法互换用
	 * @param source 传递此参数 将此参数加密
	 */
	public static void encryptAddOne(byte[] source) {
		for (int i = 0;i < source.length;i++) {
			source[i] = (byte) (source[i] + 1);
		}
	}
	/**
	 * -解密算法 加一算法 将所有字节减一 可和加密算法互换用
	 * @param encrypt 传递此参数 将此参数解密
	 */
	public static void decodeAddOne(byte[] encrypt) {
		for (int i = 0;i < encrypt.length;i++) {
			encrypt[i] = (byte) (encrypt[i] - 1);
		}
	}

这个算法简单易懂 并且加密和解密可以互用,但是源数据为数字的话就不好使了

这是用此算法的加密 hello world 的输出结果

在此算法上优化了一下

加密算法三

/**
	 * -加密算法 加i算法 将所有字节加i 可和解密算法互换用
	 * @param source 传递此参数 将此参数加密
	 */
	public static void encryptAddI(byte[] source) {
		source[0] += 1;
		for (int i = 1;i < source.length;i++) {
			source[i] = (byte) (source[i] + i);
		}
	}
	/**
	 * -解密算法 加i算法 将所有字节减i 可和加密算法互换用
	 * @param encrypt 传递此参数 将此参数解密
	 */
	public static void decodeAddI(byte[] encrypt) {
		encrypt[0] -= 1;
		for (int i = 1;i < encrypt.length;i++) {
			encrypt[i] = (byte) (encrypt[i] - i);
		}
	}

下面是hello world的输出结果

如果对你有用的话点个赞再走吧~

发布了38 篇原创文章 · 获赞 23 · 访问量 9057

猜你喜欢

转载自blog.csdn.net/qq_41806966/article/details/103888049