Pau*_*aul 7 php sha1 objective-c hmac
我正在尝试使用PHP和Objective-C实现身份验证解决方案.两种语言都使用相同的密钥和相同的密钥创建自己的HMAC-SHA1编码字符串.
显然他们似乎在如何做到这一点上有所不同.
在Objective-C方面,我使用OAuthCustomer作为签名类,它产生正确的编码字符串:
/3n/d4sKN6k3I7nBm1qau59UukU=
Run Code Online (Sandbox Code Playgroud)
在PHP方面,我使用内置函数hash_hmac('sha1',...)和base64编码,它产生:
ZmY3OWZmNzc4YjBhMzdhOTM3MjNiOWMxOWI1YTlhYmI5ZjU0YmE0NQ==
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用另一个函数(这里提到),这产生了base64编码:
NWY1ODUwOWE3NGI4NWU5ZTIxMDYzMTNmNzk3NTYxMDQ4OWE1MmUzNQ==
Run Code Online (Sandbox Code Playgroud)
我完全不知道如何解决这个问题,我甚至不知道为什么会这样.
谢谢大家的帮助,
保罗
mar*_*rio 23
好的,我会添加一个虚假答案.(在Stackoverflow上,每个问题都应该用答案来装饰.)
PHP中的哈希函数主要返回十六进制字符串,而不是真实数据.(无论出于何种原因).通常有一个函数参数使其与其他实现所期望的兼容:
hash_hmac("sha1", $data, $key, $raw_output=TRUE);
md5($str, $raw_output=TRUE);
hash("sha1", $data, $raw_output=TRUE);
Run Code Online (Sandbox Code Playgroud)