我知道如果给出md5 / sha1的值,将其从X位(即128位)减少到Y位(即64位)会增加生日攻击的可能性,因为信息已丢失。是否有任何易于使用的工具/公式/表格可以说明当长度减少发生时(与其原始猜测概率相比),“正确”猜测的概率是多少?
答案 0 :(得分:1)
加密很难。我建议不要试图做这种事情。这就像烹饪河豚一样:最好留给专家。
所以只需使用全长哈希。自MD5 is broken和SHA-1 is starting to show cracks以来,您不应在新应用程序中使用它们。 SHA-2现在可能是你最好的选择。
答案 1 :(得分:1)
我肯定会建议不要减少哈希的位数。这里涉及的问题太多了。首先,您将如何决定丢弃哪些位?
其次,很难预测这些位的丢弃会如何影响新的“缩短”散列函数中的输出分布。 (精心设计的)散列函数旨在将输入均匀地分布在整个输出空间中,而不是它的子集。
通过丢弃一半的比特,你有效地获取了原始哈希函数的一个子集,这可能不具有正确设计的哈希函数的理想属性,并可能导致进一步的弱点。
答案 2 :(得分:0)
好吧,因为哈希中的每个额外位都提供了两倍的可能哈希值,每次缩短哈希值时,只有一半可能的哈希值,因此猜测该随机数的几率增加了一倍。
128 bits = 2^128 possibilities
从而
64 bits = 2^64
所以通过将它切成两半,你就得到了
2^64 / 2^128 percent
可能性较小