SHA1摘要应为160位长。它通常表示为一个包含40个字符的字符串。考虑到8位字节,1个字符对应1个字节,在我看来,SHA1摘要应该有20个字节,它的十六进制表示为40个字节。
例如,使用OpenSSL我可以获得以下结果(在手动删除添加的额外信息后):
PLAIN MESSAGE:唯一可能的革命就在我们内心
openssl dgst -sha1 -hex dgsttxt &> sha1_hex
32 64 66 61 33 35 66 62 35 37 34 65 36 62 65 36 32 33 62 37 63 36 31 61 63 61 32 63 61 31 65 66 39 30 36 62 39 63 38 34
openssl dgst -sha1 -binary dgsttxt &> sha1_binary
2D FA 35 FB 57 4E 6B E6 23 B7 C6 1A CA 2C A1 EF 90 6B 9C 84
在每个文件中应用wc
wc sha1_binary sha1_hex
0 1 20 sha1_binary
0 1 40 sha1_hex
0 2 60 total
所以我有两个问题:
我已经看到了类似的问题here,但我不确定我是否太愚蠢,无法理解答案,或者他们是否真的很穷。任何帮助表示赞赏。
答案 0 :(得分:1)
160位/ 8 = 20字节;十六进制的字节是2个字符(00
到FF
)和2 * 20 = 40个十六进制字符。
较长的输出是十六进制编码散列的十六进制编码版本。
这是什么意思,谁知道。
var s = "32 64 66 61 33 35 66 62 35 37 34 65 36 62 65 36 32 33 62 37 63 36 31 61 63 61 32 63 61 31 65 66 39 30 36 62 39 63 38 34".split(" ");
for (var i = 0; i < s.length; i++)
{
document.write( String.fromCharCode(parseInt(s[i], 16)) );
}