IT技术博客大学习 共学习 共进步

HMAC-*算法集合

司徒楠,一个PHP程序员 2010-08-10 04:09:54 浏览 3,144 次

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. QQ上传大文件为什么这么快 (阅读 13,083)
  2. HashMap解决hash冲突的方法 (阅读 12,464)
  3. 关于memcache分布式一致性hash (阅读 11,661)
  4. MinHash原理与应用 (阅读 6,922)
  5. 无锁HashMap的原理与实现 (阅读 6,582)
  6. md5到md5破解的一些科普 (阅读 6,383)
  7. LVS hash size解决4096个并发的问题 (阅读 6,282)
  8. 如果用户在5分钟内重复上线,就给他发警告,问如何设计? (阅读 5,885)
  9. Ubuntu 下Hash校验和不符问题的解决 (阅读 5,463)
  10. 分布式系统hash策略 (阅读 5,126)