当前位置:首页 > 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 函数的语法如下:

string hash_hmac ( string $algo , string $data , string $key [, bool $raw_output = false ] )
  • $algo:哈希算法,如 sha256sha1md5 等。
  • $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 并与接收到的值比较:

php实现hmac

$receivedHmac = '...'; // 接收到的 HMAC 值
$calculatedHmac = hash_hmac('sha256', $data, $key);
if (hash_equals($calculatedHmac, $receivedHmac)) {
    echo '验证通过';
} else {
    echo '验证失败';
}

注意事项

  • 使用 hash_equals 比较 HMAC 值,避免时序攻击。
  • 密钥应足够复杂,避免使用简单字符串。

标签: phphmac
分享给朋友:

相关文章

php记住密码怎么实现

php记住密码怎么实现

使用Cookie实现记住密码功能 在PHP中,可以通过设置Cookie来记住用户的登录状态。以下是一个简单的实现方式: // 用户登录验证成功后 if ($login_success) {…

php长连接实现

php长连接实现

PHP 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HTTP…

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE TAB…

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Conte…

php实现即时通讯

php实现即时通讯

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

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…