2012-04-20 92 views
7

我们目前正在设计一个web api并且正在实施授权过程。我们已经遵循(主要)amazons implementation,但有一部分我真的不完全明白。为什么base64编码API授权密钥?

也就是说,base64编码得到的hmac有什么意义?长度上的差异可以忽略不计,至少对于大多数网站来说。亚马逊可能会注意到不同之处。这是唯一的原因吗?这可能与ascii/unicode有关吗?

回答

13

散列算法和HMAC不提供十六进制字符串输出,这是许多人倾向于相信的;他们都输出二进制数据。 Base64为您提供了一种轻松,便携地将二进制数据表示为字符串的方法。

至于为什么,它可能只是为了方便,并在软件的许多不同部分之间使用标准编码。没有什么特别的,除了它是一个广泛使用的编码。

+4

隐含在您的答案中,API密钥需要从客户端传递到通常运行RESTful Web服务的服务器,并且与那些通常使用字符串的HTTP进行交互。因此,要通过HTTP将API密钥传递给这样的服务,您需要以某种方式对其进行编码,并且base64是此目的的常用选项。 – jeffsix 2012-04-20 14:24:47

+0

+1这是一个很好的例子,它会更适合使用Base64。我不经常做HTTP的东西,所以谢谢你添加这个。 – 2012-04-20 22:16:40