我有一个sha-160计算,它给我一个160位的数据哈希,但我希望这比必要的大。所以我想我可以将生成的散列截断为低64位并使用它。
使用sha-160哈希计算的低64位是否给出了合理随机的64位哈希?
答案 0 :(得分:5)
对于某些好的哈希来说意味着什么的一部分是它的位的任何固定子集也是(尽可能地,给定多少位)良好的哈希。 SHA-160散列的低64位应该是一个好的64位散列,只要有这样的东西。
请注意,出于某些目的,64位真的不是那么多。例如,如果你的应用程序中有任何东西在有人发现具有相同散列的两个不同内容时中断,你可能需要更长的时间:平均而言,只需要适度的数十亿次试验就能找到具有相同64位散列的两件事,无论你的哈希算法是什么。
如果你只使用了所有160位会发生什么坏事?