加密算法中的 salt 的用途和意义何在, 还有现在就 bcryp t比较安全吗
不用salt有什么缺点, bcrypt 是不是比较耗能源和速度慢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
不用salt有什么缺点, bcrypt 是不是比较耗能源和速度慢
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
安全,总是考虑最坏的情况,我们把所有的密码加密(比如md5)以后存放在数据库里面。
最坏的情况,黑客入侵了数据库,获得了所有的数据。为什么加入 salt?这样,即使两个用户使用了一样的密码,由于有了 salt 的存在,密码加密以后保存在数据库里面,也是不一样的。
黑客的破解方式有两种:
说白了,就是猜谜码,也就是说,黑客用一个对照表——彩虹表——来猜谜码。这时我们给他加点盐(salt),这种方法就不灵了。
bcrypt 在加密的时候已经加入了盐(salt)。
bcrypt 比较耗资源,用多了的话会导致资源上升,内存占用加大,网站变慢,最后导致全球气候变暖,南极冰川融化,海平面上升,…… 因此还是 md5+salt 才是绿色环保型的加密方式。
假设你的数据库已经被黑客拿到了。
比如 md5sum("123456") = "e10adc3949ba59abbe56e057f20f883e"
如果不用 salt ,直接 md5 的话,直接在你的数据库里搜索后面那个值不就能找出所有密码是"123456"的用户了吗?
要知道,黑客的目的其实并不是(或者说大多数时候不是)破解某一个人的密码,而是获取大量的用户名/密码对。
好了,现在你加了盐,但盐是固定的,比如直接写死在代码里的,这样行不行呢?这样也是不行的,因为黑客仍然可以通过预先计算的方式来做。比如黑客黑了你的服务器,看到了你的代码,知道了你的盐是 xxx ,于是他计算:
md5sum("123456xxx") = "e087dae60e744ea80722b785a75adbb7"
然后再到你的数据库里搜索,又能得到大量密码是 123456 的用户了。
那该怎么办呢?
所以,不但要加盐,而且每个用户的盐还得不一样。我看到的一种做法是,直接用每个用户的用户名,或者用户名的变形来做盐。
现在也有很多 md5 反查网站,如 http://www.xmd5.com/ http://www.cmd5.com/ 不加盐的话是很容易反查的。
推荐一篇文章:用户密码薄如纸
不用salt,被爆库了就等同于步csdn后尘。hash字典是很厉害的,解大多数用户密码不是问题。
bcrypt很慢。人多一点就是大负担。
与那个流行的英文帖子的观点相反,我认为用bcrypt过于极端,没有必要,因为: