哪种算法能提供更安全的“快速校验和”?仅从MD4和Adler32中选择。
发布于 2011-12-04 07:52:55
我会把它们都用来做校验和。由于这两个选项都“相对较快”,你不可能比同时使用两个古老的选项更安全。
但是,如果您正在寻找最安全的选择--我会选择MD4。
引用:
在最初的SWID要求中,可接受的冲突率被确定为千万分之一。这里的唯一性程度很重要,但它不必像MD4声称的2^64次操作那样健壮,才可能发生冲突。
来源:MD4-SWID.pdf
对于短消息,Adler32有一个需要注意的弱点:
乔纳森·斯通在2001年发现,Adler-32对非常短的消息有弱点。他写道:“简单地说,问题是,对于非常短的数据包,Adler32保证对可用比特的覆盖很差。请不要相信我的话,问问Mark Adler。:-)”问题是,对于短消息,sum A不会换行。对于128字节的消息,A的最大值为32640,低于模运算所使用的值65521。可以在RFC3309中找到扩展的解释,其强制使用CRC32而不是用于流控制传输协议的Adler-32。
和:
运行Adler、CRC32和两者的
在几组100万个随机生成的类似url的字符串上,长度从16到128个字符不等,Adler在~1%的情况下产生重复项;CRC32产生~0.2%;并且在几次运行中,两者的组合仅发现2个重复项(约.0.002%,但没有足够的样本来判断代表性)。
来源:Hashing urls with Adler32
考虑到碰撞的可能性很高,特别是使用Alder32的短信,我投票给MD4。
https://stackoverflow.com/questions/8371871
复制相似问题