Hash 截断sha-160散列会产生合理的散列吗?

Hash 截断sha-160散列会产生合理的散列吗?,hash,cryptography,truncate,sha,Hash,Cryptography,Truncate,Sha,我有一个sha-160计算,它给了我一个160位的数据散列,但我想这比需要的要大得多。所以我想我可以把结果的散列值截短为低64位,然后使用它 采用sha-160散列计算的低64位是否会产生合理的随机64位散列?一部分好的散列意味着它的任何固定的位子集也是好的散列(只要可能,给定多少位)。SHA-160散列的低64位应该是一个好的64位散列,只要存在这样的情况 注意,出于某些目的,64位实际上并不是那么多。例如,如果有人用相同的哈希值找到两个不同的东西时,应用程序中出现了任何问题,那么您可能需要更

我有一个sha-160计算,它给了我一个160位的数据散列,但我想这比需要的要大得多。所以我想我可以把结果的散列值截短为低64位,然后使用它


采用sha-160散列计算的低64位是否会产生合理的随机64位散列?

一部分好的散列意味着它的任何固定的位子集也是好的散列(只要可能,给定多少位)。SHA-160散列的低64位应该是一个好的64位散列,只要存在这样的情况

注意,出于某些目的,64位实际上并不是那么多。例如,如果有人用相同的哈希值找到两个不同的东西时,应用程序中出现了任何问题,那么您可能需要更长的时间:平均而言,无论您的哈希算法如何,找到两个使用相同64位哈希值的东西只需几十亿次的尝试


如果只使用所有160位,会发生什么坏事?

那么,您将获得12个字节?这是什么样的应用程序?在这种情况下,我宁愿使用异或折叠,而不是截断。在这两种情况下,应将SHA-160的cypto性能分析视为“丢弃”。然而,在折叠方法中,所有位都以某种方式使用。在这两种情况下,如果SHA-160被认为是均匀分布的,则怀疑它是否有区别。64位中的唯一值的数量仍然非常。。。大。。。但我不太确定我是否会使用它作为无冲突方法的保证。@pst实际上不需要折叠-只要底层哈希是安全的,任何比特子集都是足够的。如果散列不安全,那么折叠就不太可能对你有多大帮助。事实上,64位散列最多只有32位安全性,也就是说“一点都不安全”。@pst,这里,32位安全性意味着在一个完美的64位散列上,平均只需要2^32次尝试就可以找到冲突。请参阅@pst:bruteforce攻击所需的基本操作数的日志基数2。64位has位于数据的一个子集上,然后我在整个数据上也有一个256位哈希。64位哈希的目的是在工作的大部分时间中段快速识别问题。如果失败,最后的256哈希将提供更好的保证,确保一切正常。