谁能告诉我为什么亚马逊想要 hmac-sha1/sha256 哈希值的 base64 ?
http://docs.amazonwebservices.com/AmazonSimpleDB/latest/DeveloperGuide/HMACAuth.html http://docs.amazonwebservices.com/AmazonSimpleDB/latest/DeveloperGuide/HMACAuth.html
我知道 base64 是表示 ascii 中的二进制日期,但 sha1/sha256 已经是 ascii - 我的意思是它唯一的十六进制。
Thanks
Timo
这些哈希值不是 ASCII——您看到十六进制数字的原因是因为您用来生成它们的软件获取摘要的二进制输出并将其转换为十六进制数字的 ASCII 字符串。
例如,MD5 摘要将填充 16 字节的数组。您还可以将其表示为 32 个字符的字符串,但摘要的最基本形式仍然是字节数组。
将字节数组更改为十六进制字符串时,需要 8 位(一个完整字符)来表示每 4 位数据。尽管不经常这样调用,但您可以说它使用“base16”编码,因为您一次抓取 4 位并将它们映射到 16 个字符的字母表。
另一方面,Base64 一次抓取 6 位并将它们映射到 64 个字符的字母表。这意味着您需要 8 位(同样是一个完整字符)来表示每 6 位数据,这相当于 Base16 浪费位的一半。 Base16 编码的字符串始终是原始字符串的两倍; Base64 编码的字符串只有三分之四大。对于 SHA256 哈希,base16 占用 64 个字节,但 base64 占用大约 43 个字节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)