不用salt有什么缺点, bcrypt 是不是比较耗能源和速度慢
2 回答

假设你的数据库已经被黑客拿到了。
比如 md5sum("123456") = "e10adc3949ba59abbe56e057f20f883e"
如果不用 salt ,直接 md5 的话,直接在你的数据库里搜索后面那个值不就能找出所有密码是"123456"的用户了吗?
要知道,黑客的目的其实并不是(或者说大多数时候不是)破解某一个人的密码,而是获取大量的用户名/密码对。
好了,现在你加了盐,但盐是固定的,比如直接写死在代码里的,这样行不行呢?这样也是不行的,因为黑客仍然可以通过预先计算的方式来做。比如黑客黑了你的服务器,看到了你的代码,知道了你的盐是 xxx ,于是他计算:
md5sum("123456xxx") = "e087dae60e744ea80722b785a75adbb7"
然后再到你的数据库里搜索,又能得到大量密码是 123456 的用户了。
那该怎么办呢?
所以,不但要加盐,而且每个用户的盐还得不一样。我看到的一种做法是,直接用每个用户的用户名,或者用户名的变形来做盐。
现在也有很多 md5 反查网站,如 http://www.xmd5.com/ http://www.cmd5.com/ 不加盐的话是很容易反查的。
推荐一篇文章:用户密码薄如纸

安全,总是考虑最坏的情况,我们把所有的密码加密(比如md5)以后存放在数据库里面。
最坏的情况,黑客入侵了数据库,获得了所有的数据。为什么加入 salt?这样,即使两个用户使用了一样的密码,由于有了 salt 的存在,密码加密以后保存在数据库里面,也是不一样的。
黑客的破解方式有两种:
字典破解
暴力破解
说白了,就是猜谜码,也就是说,黑客用一个对照表——彩虹表——来猜谜码。这时我们给他加点盐(salt),这种方法就不灵了。
bcrypt 在加密的时候已经加入了盐(salt)。
bcrypt 比较耗资源,用多了的话会导致资源上升,内存占用加大,网站变慢,最后导致全球气候变暖,南极冰川融化,海平面上升,…… 因此还是 md5+salt 才是绿色环保型的加密方式。
相关问题推荐
添加回答
举报