This Wikipedia page有一个广泛的散列方法列表
正如你所看到的,MD5和Sha1都被破坏了(在密码学中,“破碎”意味着攻击的复杂性比蛮力攻击要复杂。换句话说,如果你需要100万年来发现碰撞,而不是使用蛮力十亿年,算法被认为是破碎的,即使它可能仍然可以安全使用它)
您使用什么作为哈希算法?
SHA1已被破坏,但仍需要数十亿年来计算碰撞。
其他哈希仍然没有中断,但我们必须记住,研究人员将精力集中在主流算法(即MD5和SHA1)上,因此不间断的哈希可能也是不安全的。
答案 0 :(得分:11)
现在大多数人仍然使用SHA1甚至是MD5,无论是否损坏。因为哈希的当前技术水平是我们知道一些功能,我们知道它们具有理论上的漏洞,但没有真正的实际中断,以及一些我们根本不了解的未经证实的功能。
如果您使用哈希函数进行密码存储,理论上的漏洞可能对您无关紧要。首先是因为漏洞的性质无法真正帮助扭转密码。其次,因为如果您非常关心安全性,那么您可能不会使用密码。
更重要的是,如果您使用的是数字签名,SSL,IPSEC等,它们都依赖于散列函数,并且您需要散列函数以保持长时间的安全性。但是在这里你别无选择,只能等待哪些哈希函数成为新的经过验证的标准,和/或如果可以的话,使用多个哈希函数。
即便如此,这仍然是大局势中的威胁列表。您的系统中的安全问题比攻击您的哈希函数的人更有可能出现在您自己的代码或人员威胁中!
但是,如果设计一个新系统,设计它的建议,以便您可以随时替换任何加密算法仍然很有价值。理想情况下,通过配置/插件,而不是重新编译。
答案 1 :(得分:4)
我使用Whirlpool hash。但是......你不能依赖哈希来保护密码。如果您在数据库中存储密码,总是使用一个不错的盐(这有助于防止彩虹表攻击和冲突)。
并遵循适用于您平台的其他适当安全准则:)
答案 2 :(得分:2)
这取决于我使用的哈希值... 安全?文件更改检测?查找重复文件?
我从问题的方式假设前者是你使用哈希的原因。在这种情况下,我建议不要使用“破损”方法。
如果是非安全用途(即查找重复文件),MD5工作正常并且更快。
答案 3 :(得分:1)
还有其他人,例如SHA-256或RIPEMD-160,或者甚至是其中一个SHA-3候选人(请参阅列表here供您选择。请始终牢记这些并非如此进行了彻底的测试和分析,分析为MD4 / 5和SHA-1。当然,这也是性能方面的成本。
你的问题的一个答案是使用其中两个,希望有足够的不同,打破一个不会打破另一个。两个被打破到足以伪造两个校验和的可能性是相当深奥的恕我直言。
答案 4 :(得分:0)
如果担心安全问题,最好避免“损坏”哈希函数。对于一些刚刚被研究人员打破的哈希函数,你所说的可能是真的,但现实世界的攻击很快就会通过使用通过研究工作获得的新见解来表现出来。
例如,现在可以很快找到MD5的碰撞(我认为维基百科提到了一种方法,可以在几分钟内完成,但如果我错了就纠正我)。
如果发生这种情况,您不希望为已经计算过的大量事物重新计算所有哈希/签名。
答案 5 :(得分:0)
据我了解,MD5的部分内容是某个原始文本现在能够轻松构建具有相同MD5摘要的第二个文本。< / p>
仅具有该原始文本的MD5摘要的人仍然无法构建与其匹配的第二个文本。
答案 6 :(得分:0)
在https://security.stackexchange.com/questions/211/how-to-securely-hash-passwords和https://security.stackexchange.com/questions/56397/which-hashing-algorithm-is-ideal-for-use-on-the-web上也对此进行了讨论
TL; DR: