我正在尝试使用PHP和Objective-C实现身份验证解决方案。两种语言都使用相同的密钥和相同的秘密创建自己的HMAC-SHA1编码字符串。
显然它们似乎在处理方式上有所不同。
在Objective-C侧,我正在使用OAuthCustomer作为签名类,它生成正确的编码字符串:
/3n/d4sKN6k3I7nBm1qau59UukU=
在 PHP 方面,我使用内置的函数 hash_hmac('sha1',...) 进行哈希处理,加上 base64 编码后会产生这样的结果:
ZmY3OWZmNzc4YjBhMzdhOTM3MjNiOWMxOWI1YTlhYmI5ZjU0YmE0NQ==
我接着尝试使用另一个函数 (在这里提到),并且这个函数使用base64编码之后会生成以下内容:
NWY1ODUwOWE3NGI4NWU5ZTIxMDYzMTNmNzk3NTYxMDQ4OWE1MmUzNQ==
我完全不知道如何解决这个问题,也不知道为什么会发生这种情况。
非常感谢帮助,
Paul
hash_hmac()
的输出是一个十六进制字符串。你已经对该十六进制字符串进行了base64编码,这可能是不正确的。首先将hash_hmac
函数的第四个参数设置为true。 - mario