这个维基百科页面有一个广泛的散列方法列表
正如你所看到的,MD5和Sha1都被破坏了(在密码学中,"破碎"意味着攻击的复杂程度不如蛮力攻击.换句话说,如果你需要100万年才能找到碰撞而不是10亿年使用蛮力,算法被认为是破碎的,即使它可能仍然安全使用它)
你用什么作为哈希算法?
SHA1已被破坏,但仍需要数十亿年来计算碰撞.
其他哈希仍然没有中断,但我们必须记住,研究人员将精力集中在主流算法(即MD5和SHA1)上,因此不间断的哈希也可能是不安全的.
这些天大多数人仍然使用SHA1甚至MD5,无论是否破碎.因为哈希的当前技术水平是我们知道一些功能,我们知道它们具有理论上的漏洞但没有真正的实际中断,以及一些我们根本不了解的未经证实的功能.
如果您使用哈希函数进行密码存储,理论上的漏洞可能对您无关紧要.首先是因为漏洞的性质无法真正帮助扭转密码.其次,因为如果您非常关心安全性,那么您可能不会使用密码.
更重要的是,如果您使用的是数字签名,SSL,IPSEC等,它们都依赖于哈希函数,并且如果您需要哈希函数长时间保持安全.但是在这里你别无选择,只能等待哪些哈希函数成为新的经过验证的标准,和/或如果可以的话,使用多个哈希函数.
即便如此,这仍然是大局势中的威胁列表.与攻击您的哈希函数的人相比,系统中的安全问题更可能出现在您自己的代码或人员威胁中!
尽管如此,如果设计一个新系统,设计它的建议,以便您可以随时替换任何加密算法仍然很有价值.理想情况下,通过配置/插件,而不是重新编译.