我有一个应用程序,其源代码被检入公共存储库。此源代码包含配置文件,在这些配置文件中是SHA-256散列密码。
我的理解是,当涉及散列密码时,最终用户实际上不必输入用于生成散列的密码,而是生成相同散列值的任何密码。我相信这被称为碰撞。
那么我可以公开显示我的散列密码,并合理保证有人不能接受该散列,然后生成可用于访问我的应用程序的密码(或生成集合)吗?这是否是这些哈希算法试图制作的保证?
答案 0 :(得分:1)
在一般情况下,没有已知的针对SHA-2的实际攻击。但是,通常认为将散列密码保密是更好的,因为是彩虹表,字典攻击和其他类似的东西。如果你采取了适当的预防措施,如盐腌,循环哈希,并有一个很好的长密码,它应该是完全安全的。
不过,最好不要这样做。你永远不知道将来可能会发展出哪些加密攻击。答案 1 :(得分:0)
有人不可能反转HASH,SHA1,SALT等。有一些方法可以反转一个,但是如果你认为你有很大的风险我会使用SHA1和SALT以获得最大的安全性。拥有一个很长的密码使得它很难逆转,但除非他们是真正的经验丰富的编码员,否则你不喜欢成为它的受害者。
阅读维基百科的算法......
SHA1:http://en.wikipedia.org/wiki/SHA-1
盐:http://en.wikipedia.org/wiki/Salt_(cryptography)
只需使用一个唯一的密码就可以了; - )