我正在创建一个密码存储系统的web服务器,我正在建设的乐趣。
对我来说,使用SHA2和SHA3进行散列,然后将它们存储在数据库中会更安全吗?如果我同时使用这两种标记,那么我就能够检测到是否有人试图发送SHA2冲突(尽管这不太可能),因为SHA3散列将是错误的。
但是,SHA3 2/SHA3 3是否如此安全,以至于整个努力都毫无意义?
发布于 2015-05-22 21:35:22
你做错了,想错了。密码散列的问题不是,也从来不是关于碰撞的。密码散列的主要问题是速度(散列函数太快)和并行性(散列函数总是与其本身相同)。
密码哈希有很多理论。作为介绍,请阅读这个答案。简单的单行总结是:使用bcrypt。
做任何比bcrypt更好(即更安全)的事情是很难的(有些人是正在尝试,并且用正确的方式:通过公开的竞争、公开的研究和多年的努力)。然而,制造比bcrypt糟糕得多的东西是非常容易的,而且很多人似乎都能轻而易举地做到这一点。通过你的SHA-2和SHA-3组合方案,你将在令人沮丧的名单上再增加一个人,这些人认为创造力是密码学中的一件好事,并为此付出了高昂的代价。
(所有这些都不能说明SHA-2或SHA-3是泛型哈希函数。但是,尽管名称,哈希和密码哈希实际上是非常不同的活动,没有相同的要求,也不应该使用相同的算法)。
https://security.stackexchange.com/questions/89914
复制相似问题