为了账号安全,请及时绑定邮箱和手机立即绑定

加密算法中的 salt 的用途和意义何在, 还有现在就 bcryp t比较安全吗

/ 猿问

加密算法中的 salt 的用途和意义何在, 还有现在就 bcryp t比较安全吗

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

查看完整描述

2 回答

?
蝴蝶不菲

假设你的数据库已经被黑客拿到了。

比如 md5sum("123456") = "e10adc3949ba59abbe56e057f20f883e"

如果不用 salt ,直接 md5 的话,直接在你的数据库里搜索后面那个值不就能找出所有密码是"123456"的用户了吗?

要知道,黑客的目的其实并不是(或者说大多数时候不是)破解某一个人的密码,而是获取大量的用户名/密码对

好了,现在你加了盐,但盐是固定的,比如直接写死在代码里的,这样行不行呢?这样也是不行的,因为黑客仍然可以通过预先计算的方式来做。比如黑客黑了你的服务器,看到了你的代码,知道了你的盐是 xxx ,于是他计算:

md5sum("123456xxx") = "e087dae60e744ea80722b785a75adbb7"

然后再到你的数据库里搜索,又能得到大量密码是 123456 的用户了。

那该怎么办呢?

所以,不但要加盐,而且每个用户的盐还得不一样。我看到的一种做法是,直接用每个用户的用户名,或者用户名的变形来做盐。

现在也有很多 md5 反查网站,如 http://www.xmd5.com/ http://www.cmd5.com/ 不加盐的话是很容易反查的。

推荐一篇文章:用户密码薄如纸


查看完整回答
反对 回复 2018-10-14
?
BIG阳

安全,总是考虑最坏的情况,我们把所有的密码加密(比如md5)以后存放在数据库里面。

最坏的情况,黑客入侵了数据库,获得了所有的数据。为什么加入 salt?这样,即使两个用户使用了一样的密码,由于有了 salt 的存在,密码加密以后保存在数据库里面,也是不一样的。

黑客的破解方式有两种:

  • 字典破解

  • 暴力破解

说白了,就是猜谜码,也就是说,黑客用一个对照表——彩虹表——来猜谜码。这时我们给他加点盐(salt),这种方法就不灵了。

bcrypt 在加密的时候已经加入了盐(salt)。

bcrypt 比较耗资源,用多了的话会导致资源上升,内存占用加大,网站变慢,最后导致全球气候变暖,南极冰川融化,海平面上升,…… 因此还是 md5+salt 才是绿色环保型的加密方式。


查看完整回答
反对 回复 2018-10-14

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信