4

我能够使用以下代码成功获取 HMAC SHA1 签名密钥:

echo hash_hmac('sha1','office:fred','AA381AC5E4298C23B3B3333333333333333333');

产生:

5e50e6458b0cdc7ee534967d113a9deffe6740d0

但是,我正在与之合作的地方却期待这个:

46abe81345b1da2f1a330bba3d6254e110cd9ad8

我尝试了一个在线工具,看来两者之间的区别在于与我一起工作的人期望使用 HEX 类型的签名密钥。

为了输出 HEX 类型,我需要添加一些东西到我的 PHP 中吗?

4

1 回答 1

3

在将十六进制字符串传递给 hash_hmac 之前,您需要将其转换为二进制数据:

var_dump(hash_hmac("sha1", "office:fred", pack("H*", "AA381AC5E4298C23B3B3333333333333333333")));

46abe81345b1da2f1a330bba3d6254e110cd9ad8按预期输出。

于 2012-10-22T13:28:26.353 回答