首页 > 代码库 > DES与按位异或结合产生随机的加密文本

DES与按位异或结合产生随机的加密文本

    最近有需求需要在客户端存放一些加密后的数据,说到加密第一个想到的就是DES有现成的工具,直接调用就好。但是反复思考后感觉单靠DES加密太不安全,毕竟如果内容一样加密后的加密结果数据也是相同的,这样前端用户如果有心去做不断的碰撞测试,有很大的几率猜出密码。

    解决这样的问题有很多方法,考虑将数据2次加密,但是如果2次加密用的密码固定就又等于回到原点,为了解决这个问题,想到了随机产生一个数字(比如当前毫秒+随机数),使用这个数字按位异或加密文本,密钥保存在文本末端。

加密过程

1、产生一个6位随机数

2、使用这个随机数按位异或加密需要加密的文本

3、加密用的随机数加到加密后的文本末尾(最后2个byte)

4、将异或后的文本末尾加上随机产生的密钥的文本,使用DES加密


这样每次加密因为产生的随机数是不同所以加密出来的文本也是不同,前端用户无法使用不断碰撞结果去猜测密钥

解密过程也相当的简单

1、使用DES解密

2、读取最后2byte数据获取加密随机数

3、使用加密随机数,按位异或返回原文本


DES与按位异或结合产生随机的加密文本