随机函数用于加密,前面已经介绍了组合法、跳变法、重排法、多模法,这里再介绍一种方法:加盐法。
加盐法的最大特色是增加加密强度,它是一种动态方法。经过加盐处理可以做到,即使用同样的明文、同样的用户密码每次加密得到的密文都不一样,密码、明文、密文没有固定的对应关系这样当然不好分析了。
下面介绍如何加盐,所谓盐也是随机数,怎么获得盐?作为盐的随机数可以让程序读取时间流而得到,如果需要多个可以截取时间流得到一个数值,用此数值做种子启用随机函数得到多个随机数。
有了盐怎么用?很简单,用随机函数加密需要生成随机序列作为密钥数组,生成密钥数组的函数种子一般都是动态的随用户密码而变化的,现在让得到的盐参与种子的运算,也就是盐和用户密码共同决定函数种子的数值,这样加盐就完成了。有额外的东西决定种子的数值,当然同样的明文、同样的用户密码能得到不同的结果了,因为盐不一样,但是盐过于简单是有可能一样的,所以盐的取值大些益处多多。由于加盐只是参与随机函数种子的计算所以这样加盐不影响加密解密的处理速度。但由于加盐是程序的自动行为不可能对抗穷举攻击,对抗穷举攻击的最好办法是增加用户密码长度。
解密需要用到和加密一样的密钥数组,那盐从何得到?我们在加密时用到的盐需要保存起来解密时用,你可以将它们放到密文的特定位置里,但要保证取出后密文其它部分不能有丝毫变化。盐对破解高手来说不能说没有用,所以尽可能保护它,例如加密它,因为密文都是乱码,所以很容易加密它,例如你可以使用用户密码算出密文中部的一个位置,用此位置之后的数据,和盐做异或运算,解密时再异或回来。方法很多可方便选用。
上面提到盐参与随机函数种子计算,这是主要的,除此以外还可以让它参与其它运算,例如出现在明文或密文加密或解密的算式里,凡是用户密码参与的地方都可以参与,多参与可以提高解密难度,但要注意用户密码的安全性和兼顾处理速度。
随机函数用于加密——加盐法
最新推荐文章于 2021-07-23 17:00:59 发布