【问题标题】:Base64 encode: Three different outputs from different tools?Base64 编码:来自不同工具的三种不同输出?
【发布时间】:2012-02-09 22:31:12
【问题描述】:

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

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

这是经过 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 的事实会帮助您帮助我确定答案。

感谢智者提供的任何线索。

【问题讨论】:

  • 答案是哈希是被解释为十六进制数据值还是被编码的字符串。每个网站都以不同的方式和隐含地处理这个问题

标签: oauth base64


【解决方案1】:

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

这个错误是哈希被解释为字符串(得到base64编码)还是一系列十六进制值得到base64编码。在前一种情况下,结果编码比原始字符串,而在后一种情况下,结果编码比原始字符串。这不仅在经验上是正确的,而且互联网表明它首先是该标准背后的概念之一。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 欢迎来到 SO。 OP回答了他自己的问题,这个问题很老,所以你的回答并没有真正添加任何东西。请参阅stackoverflow.com/help/how-to-answer 寻求帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多