我正在尝试验证代码中针对“已知信誉源”生成的OAuth签名。我的所有步骤都经过验证,除了最后一步,其中“基本签名字符串”是HMAC-SHA1针对密钥进行哈希处理,然后是base64编码。
我已确认我的哈希值与算法预期的相同。然后我不确定我的base64编码是一样的。试图确定我的编码失败的原因,我想检查我正在使用的编码器。
这是(hash)字符串是base64编码的:
203ebb13a65cccaae5cb1b9d5af51fe41f534357
以下是产生我的代码的base64编码:
MjAzZWJiMTNhNjVjY2NhYWU1Y2IxYjlkNWFmNTFmZTQxZjUzNDM1Nw ==
根据http://www.motobit.com/util/base64-decoder-encoder.asp,这是正确的结果:
但是,根据http://www.online-convert.com/result/096d7b00138f3726daee5f6ddb107a62(提供秘密和基本字符串,而不是哈希),应该输出不同的base64。请注意,尽管base64:
不同,但哈希输出是我正确的哈希值最后,“官方”测试人员(http://hueniverse.com/oauth/guide/authentication/)从同一个哈希输出第三个不同的base64:
我不知道我做错了什么,以及这些工具输出不同结果的事实让我想知道实际上是否存在base64编码或者它们实际上是否使用不同的算法?也许这是OAuth的事实可以帮助我找出答案。
感谢明智的任何线索。
答案 0 :(得分:1)
好的,在这种情况下,第一个网站出现了同样的“错误”(在我的情况下,这是一个错误,第一个网站可能只是做了一个未说明的假设)。
该错误是否将哈希解释为字符串(获取base64encoded)或者是一系列获得base64encoded 的十六进制值。在前一种情况下,结果编码比原始字符串更长,而在后者中,结果编码比原始字符串更短。这不仅是凭经验,而且互联网表明它首先是标准背后的概念之一。
第二个网站使用(如上所述)“十六进制”数据,得到了正确答案。
答案 1 :(得分:0)
尝试通过https://base64-encode.org进行检查 在此网站上,您可以将所有类型的图像转换为Base64字符串。