当前位置:首页 > PHP

php实现hmac

2026-03-13 00:42:36PHP

PHP 实现 HMAC

HMAC(Hash-based Message Authentication Code)是一种基于哈希算法的消息认证码,常用于验证数据的完整性和真实性。PHP 内置了 hash_hmac 函数,可以方便地实现 HMAC 计算。

使用 hash_hmac 函数

hash_hmac 函数的语法如下:

php实现hmac

string hash_hmac ( string $algo , string $data , string $key [, bool $raw_output = false ] )
  • $algo:哈希算法,如 sha256sha1md5 等。
  • $data:需要计算 HMAC 的数据。
  • $key:密钥。
  • $raw_output:如果为 true,返回原始二进制数据;默认为 false,返回十六进制字符串。

示例代码

以下是一个计算 HMAC-SHA256 的示例:

php实现hmac

$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 值,避免时序攻击。
  • 密钥应足够复杂,避免使用简单字符串。

标签: phphmac
分享给朋友:

相关文章

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php实现队列

php实现队列

PHP实现队列的方法 队列是一种先进先出(FIFO)的数据结构,PHP可以通过多种方式实现队列功能。 使用数组模拟队列 PHP数组可以模拟队列的基本操作,通过array_push和array_shi…

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…

php实现静态

php实现静态

静态化实现方法 PHP实现静态化主要通过生成HTML文件或缓存机制来减少服务器动态解析的开销。以下是几种常见方法: 生成静态HTML文件 通过file_put_contents()将动态内容保存为H…

php实现即时通讯

php实现即时通讯

PHP 实现即时通讯的方案 即时通讯(IM)可以通过多种方式实现,PHP 作为服务器端语言,通常需要结合前端技术(如 WebSocket、AJAX)或第三方服务来实现实时通信。以下是几种常见的实现方式…

php 实现mvc

php 实现mvc

PHP 实现 MVC 架构的方法 MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离业务逻辑、用户界面和用户输入。以下是 PHP 实现 MVC 架构的关键步骤:…