当前位置:首页 > PHP

php实现hmac

2026-02-15 01:55:13PHP

PHP 实现 HMAC

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

基本语法

hash_hmac 函数的语法如下:

string hash_hmac(string $algo, string $data, string $key, bool $binary = false)
  • $algo:哈希算法名称,如 sha256md5 等。
  • $data:需要计算 HMAC 的消息数据。
  • $key:用于生成 HMAC 的密钥。
  • $binary:如果为 true,返回原始二进制数据;否则返回十六进制字符串(默认)。

示例代码

以下是使用 sha256 算法生成 HMAC 的示例:

$data = "This is the message to authenticate";
$key = "secret_key";
$hmac = hash_hmac('sha256', $data, $key);
echo $hmac;

支持的哈希算法

可以通过 hash_hmac_algos() 函数获取 PHP 支持的 HMAC 算法列表:

print_r(hash_hmac_algos());

输出二进制数据

如果需要输出二进制格式的 HMAC,可以将 $binary 参数设为 true

$hmac_binary = hash_hmac('sha256', $data, $key, true);
echo bin2hex($hmac_binary); // 转换为十六进制显示

验证 HMAC

验证 HMAC 时,只需重新生成 HMAC 并与接收到的 HMAC 进行比较:

$received_hmac = "received_hmac_hex_string";
$calculated_hmac = hash_hmac('sha256', $data, $key);
if (hash_equals($calculated_hmac, $received_hmac)) {
    echo "HMAC verification passed.";
} else {
    echo "HMAC verification failed.";
}

注意事项

  • 使用 hash_equals() 函数比较 HMAC 可以避免时序攻击。
  • 密钥应足够复杂且保密,避免使用简单或公开的密钥。
  • 推荐使用强哈希算法(如 sha256sha3-256),避免弱算法(如 md5)。

php实现hmac

标签: phphmac
分享给朋友:

相关文章

php实现验证码

php实现验证码

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

php实现图片上传

php实现图片上传

实现图片上传的基本步骤 创建HTML表单用于文件上传,表单需设置enctype="multipart/form-data"属性,确保文件数据正确传输。 <form action="uploa…

php实现登录

php实现登录

PHP 登录功能实现 数据库连接与用户表创建 创建一个数据库连接文件 db.php,用于管理数据库连接。MySQL 示例代码如下: <?php $host = 'localhost'; $d…

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERVER…

php实现搜索

php实现搜索

PHP实现搜索功能的方法 在PHP中实现搜索功能通常涉及数据库查询和用户输入的匹配。以下是几种常见的实现方式: 使用MySQL LIKE语句 通过简单的LIKE语句实现基础搜索: $searc…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…