【发布时间】:2014-12-14 00:50:56
【问题描述】:
SHA1 摘要的长度应为 160 位。它仍然通常表示为 40 个字符的字符串。考虑到 8 位字节和 1 个字符对应 1 个字节,在我看来 SHA1 摘要应该有 20 个字节,它的十六进制表示 40 个字节。
例如,使用 OpenSSL 我可以得到以下结果(在手动删除添加的额外信息后):
简单的信息:唯一可能的革命就在我们内心
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
所以我有两个问题:
- 为什么十六进制转储中还有 20 个字符?
- 这些额外的位是如何插入的?我可以注意到十六进制转储中的每个字节都以 3 或 6 开头。有什么特别的原因吗?
我已经看到了一个类似的问题here,但我不确定我是否太愚蠢而无法理解答案,或者他们是否真的很差。任何帮助表示赞赏。
【问题讨论】:
标签: encryption encoding openssl sha1