假设我有一个加密哈希函数,它将把消息打断成块,每个块为20个字节,每个块的内容被视为正整数,该函数将取第一个块内容的总和,第二个块的内容的平方,第三个块的内容的立方,依此类推,直到到达我们假定为第m个块的最后一个块,并以m ^ m作为值,然后在得到总和时,对总和为2 ^ 160。我想知道为什么此哈希函数不符合密码哈希函数的条件。
因此,到目前为止,我所知道的是: 每块20字节=每块160位 回想一下将二进制转换为十进制的方法: 十进制= d0 * 2 ^ 0 + d1 * 2 ^ 1 + d2 * 2 ^ 2 +…+ dn * 2 ^ n,在我们的例子中,n = 159 哈希值将是(1st block +(2nd block)^ 2 +(3rd block)^ 3 +…+(mth block)^ m)mod 2 ^ 160 根据mod操作的属性等于: (第一个区块mod 2 ^ 160 +(第二个区块)^ 2 mod 2 ^ 160 +(第三区块)^ 3 mod 2 ^ 160 +…+(第m个区块)^ m mod 2 ^ 160)mod 2 ^ 160 但我似乎知道这不是一个好函数,但由于无法继续对其进行分析,所以我无法说出原因。