IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

HMAC-*算法集合

司徒楠,一个PHP程序员 2010-08-10 04:09:54 累计浏览 3,252 次
本机暂存

HMAC-SHA1、HMAC-MD5等算法,在PHP5.1.X之后,可直接使用如下形式来计算

以下是代码片段:
echo hash_hmac(’sha1’,$data,$key); 

如果加载了MHASH扩展,也可直接使用mhash来进行运算

以下是代码片段:
echo bin2hex(mhash(MHASH_SHA1, $data, $key)); 

如果PHP版本低于5.1.X或者没有加载Mhash、或HMAC扩展,可使用如下的通用方法来进行相应运算

以下是代码片段:
function hmac($key, $data, $hash="md5") { 
    $b = 64; 
    if (strlen($key) > $b) 
        $key = pack("H*", call_user_func($hash, $key)); 
        $key = str_pad($key, $b, chr(0x00)); 
        $ipad = str_pad("", $b, chr(0x36)); 
        $opad = str_pad("", $b, chr(0x5c)); 
        $k_ipad = $key ^ $ipad ; 
        $k_opad = $key ^ $opad; 
  
    return call_user_func($hash, $k_opad . pack("H*", call_user_func($hash, $k_ipad . $data))); 

echo hmac($key,$data,’sha1’); 

同分类推荐文章

  1. 对基本有序的序列排序算法 (2026-06-11 17:46:49)
  2. Four Levels Of Customer Understanding (2026-05-22 21:00:00)
  3. 除法的意义 (2026-04-12 20:52:17)

查看更多 算法 文章 →

建议继续学习

  1. 使用gettext来支持PHP的多语言 (累计阅读 39,267)
  2. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,163)
  3. Paypal接口详细代码(PHP版,非API接口) (累计阅读 19,407)
  4. 我的PHP,Python和Ruby之路 (累计阅读 13,146)
  5. include(“./file.php”)和include(“file.php”)区别 (累计阅读 12,788)
  6. 15个最好的免费开源电子商务平台 (累计阅读 12,540)
  7. Redis消息队列的若干实现方式 (累计阅读 12,086)
  8. 到底什么是MVC? (累计阅读 11,865)
  9. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,708)
  10. Rolling cURL: PHP并发最佳实践 (累计阅读 11,486)