sha、md5、decupt与加盐结合

来源:互联网 发布:斐讯efa中文安卓编程 编辑:程序博客网 时间:2024/05/20 01:34

前几天面试时提到了如何保证密码安全,我说了md5、sha。但面试官还是不太满意。因为有这几点原因:

  • 由于MD5历史悠久,大量彩虹表的出现已经使得单纯的MD5运算已经比较容易被破解。
  • sha与md5结合,也只是将上述步骤稍微复杂了一点,因为破解这种密码的成本会越来越低,计算出来的结果也会很有价值。
  • 在被拖库后,salt也会被拿到,使用彩虹表加salt可以制作新的彩虹表。
  • md5本身问题。山大王小云教授已经证明md5是可能被碰撞的。
    当然,以上述方式破解密码的工作量是非常庞大的,这样做是否有价值也先不讨论,我们只讨论理论上的可能性。

加随机盐

这也是初学者比较容易遇到的问题,认为给密码加上一个固定字符串,就可以避免彩虹表的攻击。但是这样的话,黑客只要基于这个规则MD5(password+string)运算一次,就可以得到一个密码库,来破解所有用户的密码。
但是,如果给每一个用户加不同的str后缀,也就是加随机盐,黑客在破解的时候,就要为每一个用户创建一个密码库,这样在他破解一个用户密码后,得到的密码库无法继续使用。极大地增加了破解成本。
当然,如果黑客得到了你的库,这个方法就没什么意义了。

bcrypt加随机盐

这个方式比上一个优势更大的地方在于,黑客即使得到了你的salt盐库,自己制作密码库的时间将无限增加,因为bcrypt可以控制每秒只计算出三个密码。

另外,初始密码在客户端肯定会经过一层md5加密,建议更改为sha-2加密。

0 0
原创粉丝点击