在密码学中,哈希函数提供三个单独的函数。
- 防冲突 :某人找到两条散列相同的消息( 任意 两条消息)有多困难。
- 图像前抵抗力 :给定一个散列,找到另一个散列相同的消息有多难?也称为 单向哈希函数 。
- 第二次原像抵抗 :给定一条消息,找到另一条散列相同的消息。
这些属性是相关但独立的。例如,抗碰撞性意味着第二原像抗性,但并非相反。对于任何给定的应用程序,您将有不同的要求,需要其中一个或多个属性。用于保护服务器密码的哈希函数通常只需要具有映像前抵抗力,而消息摘要则需要全部三个。
已经表明,MD5不是抗碰撞的,但是,这并不排除其在不需要抗碰撞的应用中的使用。确实,MD5仍经常用于较小的密钥大小和更快的速度的应用程序中。也就是说,由于其缺陷,研究人员建议在新方案中使用其他哈希函数。
SHA1的一个缺陷是,从理论上讲,发现冲突的长度远远小于其长度的安全哈希函数所需的2 ^ 80步。攻击正在不断修订,目前可以以〜2 ^ 63的步骤进行-
仅在当前可计算性范围内。因此,NIST正在逐步淘汰SHA1,并指出应在2010年之后使用SHA2系列。
SHA2是在SHA1之后创建的新的哈希函数系列。当前,尚无针对SHA2功能的已知攻击。SHA256、384和512都是SHA2系列的一部分,只是使用了不同的密钥长度。
对于RIPEMD,除了要注意它不像SHA系列那样普遍使用之外,我无可奉告,因此还没有受到密码研究人员的严格审查。仅出于这个原因,我建议在其上使用SHA函数。在实现中,您使用它的速度也似乎很慢,这使它的用处不大。
总之,没有最好的功能-这完全取决于您需要的功能。注意每个缺陷,您将最有可能为 您的 方案选择正确的哈希函数。



