这里存在一个没有答案的反问句,以及一个我不理解的评论。
我正在尝试为API创建一个伪OAuth认证头部的Base64编码HMAC-SHA1签名。我找到了一份支持文档(需要经过身份验证的访问),其中介绍了如何逐步创建签名。我能够创建相同的数据,直到最后一步,即对哈希进行Base64编码。
支持文档指出HMAC-SHA1签名是:
cb5acd2d3ef689a8fbec4d06c576371834689673
我得到:
CB5ACD2D3EF689A8FBEC4D06C576371834689673
支持文档随后说明:
从第三步的十六进制结果字符串中,使用Base64编码该值
并提供以下Base64编码结果(58个字符):
Y2I1YWNkMmQzZWY2ODlhOGZiZWM0ZDA2YzU3NjM3MTgzNDY4OTY3Mw==
当我使用
Convert.ToBase64String()
将我的签名转换时,我得到了(28个字符):y1rNLT72iaj77E0GxXY3GDRolnM=
我被难住了,我不知道支持文档是错误的还是我做错了什么。我生成的字符串是28个字符,而示例是56个字符,这太有趣了,不能忽略。 前面提到的半重复问题 中的评论也使我困惑。我不明白字符串"MDY"如何转换为对我有意义的任何ascii或unicode数字 - 我不理解评论作者是如何得出这个结论的。
十六进制值被编码为文本("062..." == 0x30, 0x36, 0x32, ...),而不是它所代表的大数。