我知道有256和512版本,因为它们都是2的幂。但是384从哪里来?
我知道384的二进制表示是110000000,但我无法理解其中的逻辑。
它不是在256和512之间。它甚至不是对数中间。
为什么是384?
256 + 128 = 384
只不过是上面提到的 2 的幂的两个值相加!!
他们选择在 256 位和 512 位之间的中间点创建一个哈希函数。它对于 Base64 编码也非常有用,因为它末尾没有填充字符
=
:
abc
SHA-256: ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=
SHA-384: ywB1P0WjXou1oD1pmsZQBycsMqsO3tFjGotgWkP/W+2AhgcroefMI1i67KE0yCWn
SHA-384 也比 SHA-512 更安全,因为输出被截断。我们看不到最后两个寄存器,这是对用户隐藏的 128 位数据。这对于防止长度扩展攻击总是一件好事。