HMAC-MD5签名 - 将密钥从十六进制转换为字节格式php

时间:2013-07-12 19:51:41

标签: php hex byte

我需要使用HMAC-MD5算法对一些帖子数据进行数字签名。

我有密钥和一个示例字符串(我知道十六进制符号应该是什么。

我的问题是当我使用hash_hmac php函数时,它生成的密钥与它应该的密钥不同。

说明如下:

  1. 将HMAC密钥从十六进制转换为字节格式 - 不确定如何执行此操作

  2. 使用基于商家HMAC的HMAC-MD5程序对字符串进行签名 key - 这个位没问题

  3. 将签名从字节转换为十六进制格式并将其关联为 带参数符号的值 - 不知道该怎么做

  4. 我已尝试将此用于步骤1)$ key2 = pack(“H *”,$ key) 这对于步骤2)bin2hex($ sign)不能按预期工作。

    我发现唯一可以生成正确符号的在线HMAC-MD5发生器在这里: {'3}}选择'hexa'时。我显然不知道这是怎么解决的。

    有人可以给我任何建议吗?

1 个答案:

答案 0 :(得分:2)

$hmac = hash_hmac('md5', $data, hex2bin($key));

应该给出与在线计算器相同的答案。

  • hex2bin将密钥从十六进制格式转换为二进制格式(步骤1),hash_hmac期望。您使用pack尝试的内容也应该用于此目的。
  • 使用默认$raw_output = false
  • hash_hmac将生成十六进制输出(步骤2和3的组合)。