对于输入“你好”,SHA-1返回“aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d”,这是40个进制输出。 我知道1个字节可以表示为1个字符,所以160位输出应该能够转换为20个字符。 但是,当我在ASCII表中查找“AA”,有没有这样的十六进制值,和我很困惑有关。 如何160位SHA-1串映射为ANSI 20个字符?
Answer 1:
ASCII仅具有128个字符(7位),而具有ANSI 256(8位)。 至于十六进制值的ANSI值AA
(十进制170),相应的ANSI字符将是ª
(参见例如这里 )。
现在,你要记住,一些ASCII和ANSI字符(0-31)都是非打印控制字符(系统钟,空字符等),所以将你的散列成可读的20个字符的字符串在大多数情况下是不可能的。 例如,您的示例包含十六进制值0F
,这将转化为一个移入字符。
文章来源: How to denote 160 bits SHA-1 string as 20 characters in ANSI?