【发布时间】:2011-06-30 02:52:10
【问题描述】:
输入字符串可以是unicode字符串。计算SHA1后的输出字符串会一直返回ASCII字符吗?
【问题讨论】:
标签: sha1
输入字符串可以是unicode字符串。计算SHA1后的输出字符串会一直返回ASCII字符吗?
【问题讨论】:
标签: sha1
这取决于但严格来说,不。 SHA-1 哈希的输出是 160 位或 20 个字节,但不保证字节在 ASCII 范围内。
但是,一些散列函数输出 20 个字节的十六进制等效值(即 40 个字符),因此如果实际散列的前三个字节是 0x7e、0x03 和 0xb2,则输出将以“7e03b2”开头,在在这种情况下输出是 ASCII。
【讨论】:
SHA1 返回 20 个字节。 SHA1 不处理编码、文本、ASCII 等。
表示二进制数据的一种常用方法是将其编码为十六进制 - 在这种情况下,输出始终为 [a-f][0-9]
【讨论】:
sha1 返回一个二进制字符串。为方便起见,某些 sha1 函数可能还会将该二进制字符串编码为十六进制或 base64 - 如果是这样,结果将是 ASCII 字符。但 sha1 本身不返回 ASCII。
【讨论】: