我们目前正在设计网络API,并且正在实施授权。我们已经(大多数情况下)amazons implementation跟进,但我真的不完全理解其中的一部分。
即,对生成的hmac进行base64编码有什么意义?至少对于大多数站点来说,长度的差异可以忽略不计。亚马逊可能会注意到这种差异。这是唯一的原因吗?它可能与ascii / unicode有关吗?
答案 0 :(得分:15)
哈希算法和HMAC不提供十六进制字符串输出,这是许多人倾向于相信的;他们都输出二进制数据。 Base64为您提供了一种方便,可以轻松,可移植地将二进制数据表示为字符串。
就原因而言,它可能只是为了方便而在软件的许多不同部分之间使用标准编码。除了它是一种广泛使用的编码之外,没有什么特别之处。