php实现hmac
PHP 实现 HMAC
HMAC(Hash-based Message Authentication Code)是一种基于哈希算法的消息认证码,常用于验证数据的完整性和真实性。PHP 内置了 hash_hmac 函数,可以方便地实现 HMAC 计算。
使用 hash_hmac 函数
hash_hmac 函数的语法如下:
string hash_hmac ( string $algo , string $data , string $key [, bool $raw_output = false ] )
$algo:哈希算法,如sha256、sha1、md5等。$data:需要计算 HMAC 的数据。$key:密钥。$raw_output:如果为true,返回原始二进制数据;默认为false,返回十六进制字符串。
示例代码
以下是一个计算 HMAC-SHA256 的示例:
$data = 'message to be hashed';
$key = 'secret-key';
$hmac = hash_hmac('sha256', $data, $key);
echo $hmac;
支持的哈希算法
可以通过 hash_hmac_algos 函数查看 PHP 支持的 HMAC 算法列表:
print_r(hash_hmac_algos());
验证 HMAC
验证 HMAC 时,重新计算 HMAC 并与接收到的值比较:

$receivedHmac = '...'; // 接收到的 HMAC 值
$calculatedHmac = hash_hmac('sha256', $data, $key);
if (hash_equals($calculatedHmac, $receivedHmac)) {
echo '验证通过';
} else {
echo '验证失败';
}
注意事项
- 使用
hash_equals比较 HMAC 值,避免时序攻击。 - 密钥应足够复杂,避免使用简单字符串。






