SHA384 是 SHA512 的截断版本。但为什么会有人使用它?推论:如果 SHA384 和 SHA512 一样好,那么使用 512 位版本有什么理由吗?
我打算使用其中一种算法来验证文件完整性,所以我主要对碰撞安全感兴趣。
我很高兴听到有人在实践中如何使用 SHA2 摘要,以及您为什么选择一个版本而不是另一个版本。
SHA512、SHA256、SHA1 和 MD5 容易受到长度扩展攻击。SHA224 和 SHA384 不会因为将输出减少到内部状态,所以 SHA3 也不容易受到攻击。考虑到这一点,SHA512 是一个很好的加密抗冲突哈希函数。
出于实际目的和可预见的未来,SHA384 和 SHA512 对于几乎任何可以想象的抗碰撞应用都足够好。通常,一旦我们超过 256 位并且对于实际目的而言抗碰撞性是无限的,您将使用什么哈希的主要决定因素就是您需要多少位输出。例如,如果您需要哈希来生成 256 位 HMAC 密钥和 128 位加密密钥,则 SHA384 是自然的选择。如果您需要尽可能多的输出来计算计算成本,比如 PRNG 的输出或随机填充,那么 SHA512 是有意义的。
使用 SHA512 签名的证书似乎不适用于 Windows 上的 TLS 1.2(请参阅此处)
因此,我将使用 SHA-384(或者我想我可以使用 SHA-256)重新创建我的证书链。
虽然谢天谢地,我还没有发布任何证书,但链接页面中的线程确实为那些被 SHA-512 卡住的人提出了一个解决方法/修复。
!
我能想到使用 SHA-384 与 SHA-512 的唯一原因是因为 Digest 需要签名。例如,如果您采用 ECDSA-384 签名,它需要 384 哈希摘要,而不是 512 位。理想情况下,您可以从 512 位中丢弃任何 128 位。但是接收端需要知道你扔掉了哪个 128 位。因此,SHA384 和 SHA512 之间的唯一区别是定义需要丢弃的 128 位。