Base64编码:来自不同工具的三种不同输出?

时间:2012-01-13 18:25:07

标签: oauth base64

我正在尝试验证代码中针对“已知信誉源”生成的OAuth签名。我的所有步骤都经过验证,除了最后一步,其中“基本签名字符串”是HMAC-SHA1针对密钥进行哈希处理,然后是base64编码。

我已确认我的哈希值与算法预期的相同。然后我不确定我的base64编码是一样的。试图确定我的编码失败的原因,我想检查我正在使用的编码器。

这是(hash)字符串是base64编码的:

  

203ebb13a65cccaae5cb1b9d5af51fe41f534357

以下是产生我的代码的base64编码:

  

MjAzZWJiMTNhNjVjY2NhYWU1Y2IxYjlkNWFmNTFmZTQxZjUzNDM1Nw ==

根据http://www.motobit.com/util/base64-decoder-encoder.asp,这是正确的结果:

  

Base64 1

但是,根据http://www.online-convert.com/result/096d7b00138f3726daee5f6ddb107a62(提供秘密和基本字符串,而不是哈希),应该输出不同的base64。请注意,尽管base64:

不同,但哈希输出是我正确的哈希值
  

Base64 1

最后,“官方”测试人员(http://hueniverse.com/oauth/guide/authentication/)从同一个哈希输出第三个​​不同的base64:

  

Base64 1

我不知道我做错了什么,以及这些工具输出不同结果的事实让我想知道实际上是否存在base64编码或者它们实际上是否使用不同的算法?也许这是OAuth的事实可以帮助我找出答案。

感谢明智的任何线索。

2 个答案:

答案 0 :(得分:1)

好的,在这种情况下,第一个网站出现了同样的“错误”(在我的情况下,这是一个错误,第一个网站可能只是做了一个未说明的假设)。

该错误是否将哈希解释为字符串(获取base64encoded)或者是一系列获得base64encoded 的十六进制值。在前一种情况下,结果编码比原始字符串更长,而在后者中,结果编码比原始字符串更短。这不仅是凭经验,而且互联网表明它首先是标准背后的概念之一。

第二个网站使用(如上所述)“十六进制”数据,得到了正确答案。

答案 1 :(得分:0)

尝试通过https://base64-encode.org进行检查 在此网站上,您可以将所有类型的图像转换为Base64字符串。