如何让PHP创建像Objective-C这样的HMAC-SHA1字符串?

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)