为什么选择SHA512而不是SHA384?

时间:2012-04-08 08:41:13

标签: hash digest integrity sha512 sha2

SHA384是SHA512的截断版本。但为什么有人会用呢?并且推论:如果SHA384与SHA512一样好,那么使用512位版本有什么理由吗?

我打算使用其中一种算法来验证文件的完整性,所以我主要对colision安全感兴趣。

我很高兴听到任何人在实践中如何使用SHA2摘要,为什么你会选择一个版本而不是另一个版本。

5 个答案:

答案 0 :(得分:21)

出于实际目的和可预见的未来,SHA384和SHA512都足以应对任何可以想象的防碰撞应用。一般来说,一旦我们高于256位并且碰撞阻力在实际应用中是无限的,你将使用什么哈希的主要决定因素就是你需要多少比特的输出。例如,如果您需要哈希来生成256位HMAC密钥和128位加密密钥,则SHA384是一种自然选择。如果你需要尽可能多的计算成本输出,比如PRNG的输出或随机填充,那么SHA512是有意义的。

答案 1 :(得分:19)

SHA512 SHA256 SHA1和MD5也易受length extension attack攻击 SHA224和SHA384不是因为输出减少到内部状态,SHA3也不容易受到攻击。考虑到这一点,SHA512是一个很好的加密抗冲突哈希函数。

答案 2 :(得分:9)

SHA512可以length extension attack,SHA384不可以。 [source]

答案 3 :(得分:6)

使用SHA512签名的证书似乎不适用于Windows上的TLS 1.2(see here

因此,我将使用SHA-384重新创建我的证书链(或者我想我可以使用SHA-256)。

幸运的是,我还没有发布任何证书,链接页面中的线程确实为那些坚持使用SHA-512的人提出了解决方法/修复。

HTH!

答案 4 :(得分:0)

我之所以想到使用SHA-384和SHA-512,仅是因为Digest需要签名。例如,如果您采用ECDSA-384签名,则需要384哈希摘要,而不是512位。理想情况下,您可以丢弃512位中的任何128位。但是接收端需要知道您扔掉了哪个128位。因此,SHA384和SHA512之间的唯一区别是定义需要丢弃的128位。