Base64编码包含符号时​​HMAC不正确

时间:2014-10-11 04:14:37

标签: android json rest base64 hmac

我正在编写一个使用带有JSON的RESTful API的Android应用程序。在此过程中,我使用SHA-256算法获取查询字符串并计算HMAC。然后我对Base64编码生成的hmac字符串和原始查询字符串,然后通过json对象将它们发送到我的服务器API。有时这完全正常,有时我从服务器得到一个hmac错误的响应。我不是编码服务器的人,但我们都非常难过为什么会这样。仅当已编码的hmac字符串包含符号时​​才会出现该错误,例如' +'或者' /'或者替代' - '或者' _'。任何帮助或见解都表示赞赏。

1 个答案:

答案 0 :(得分:0)

事实证明,我正在使用的服务器在生成hmac(使用“+”和“/”而不是“ - ”和“_”)时没有使用URL安全标志,这导致HMAC产生空格,“”代替服务器端的“+”符号,尽管在Android应用程序上生成了“+”符号。当服务器对我不知道的内容进行一些更改时,问题就解决了。问题解决了,应用程序也一致。