转:HmacMD5算法[php版]

php中文网
发布: 2016-06-23 14:31:57
原创
1654人浏览过

PHP代码

function HmacMd5($data,$key)    {        // RFC 2104 HMAC implementation for php.        // Creates an md5 HMAC.        // Eliminates the need to install mhash to compute a HMAC        // Hacked by Lance Rushing(NOTE: Hacked means written)           //需要配置环境支持iconv,否则中文参数不能正常处理        $key = iconv("GB2312","UTF-8",$key);        $data = iconv("GB2312","UTF-8",$data);           $b = 64; // byte length for md5        if (strlen($key) > $b) {            $key = pack("H*",md5($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 md5($k_opad . pack("H*",md5($k_ipad . $data)));    }  

算家云
算家云

高效、便捷的人工智能算力服务平台

算家云 37
查看详情 算家云

HMAC需要一个加密用散列函数(表示为H)和一个密钥K。

假设H是一个将数据块用一个基本的迭代压缩函数来加密的散列函数。

用B来表示数据块的长。(以上说提到的散列函数的分割数据块长B=64),用L来表示散列函数的输出数据长(MD5中L=16,SHA?1中L=20)。

密钥的长度可以是小于等于数据块长的任何正整数值。应用程序中使用的密钥长度若是比B大,则首先用使用散列 
函数H作用于它,然后用H输出的L长度字符串作为在HMAC中实际使用的密钥。

一般情况下,推荐的最小密钥K长度是L长。(与H的输出数据长度相等)。

转自:http://blog.icain.cn/show-199-1.html

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号