使用HMAC-SHA1签名方法详解

前端之家收集整理的这篇文章主要介绍了使用HMAC-SHA1签名方法详解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

加密算法:@H_403_1@

使用HMAC-SHA1签名方法@H_403_1@
代码如下:
403_1@ /**@H_403_1@ * @brief 使用HMAC-SHA1算法生成oauth_signature签名值@H_403_1@ *@H_403_1@ * @param $key 密钥@H_403_1@ * @param $str 源串@H_403_1@ *@H_403_1@ * @return 签名值@H_403_1@ */@H_403_1@ function getSignature($str,$key) {@H_403_1@ $signature = "";@H_403_1@ if (function_exists('hash_hmac')) {@H_403_1@ $signature = base64_encode(hash_hmac("sha1",$str,$key,true));@H_403_1@ } else {@H_403_1@ $blocksize = 64;@H_403_1@ $hashfunc = 'sha1';@H_403_1@ if (strlen($key) > $blocksize) {@H_403_1@ $key = pack('H*',$hashfunc($key));@H_403_1@ }@H_403_1@ $key = str_pad($key,$blocksize,chr(0x00));@H_403_1@ $ipad = str_repeat(chr(0x36),$blocksize);@H_403_1@ $opad = str_repeat(chr(0x5c),$blocksize);@H_403_1@ $hmac = pack(@H_403_1@ 'H*',$hashfunc(@H_403_1@ ($key ^ $opad) . pack(@H_403_1@ 'H*',$hashfunc(@H_403_1@ ($key ^ $ipad) . $str@H_403_1@ )@H_403_1@ )@H_403_1@ )@H_403_1@ );@H_403_1@ $signature = base64_encode($hmac);@H_403_1@ }@H_403_1@ return $signature;@H_403_1@ }@H_403_1@
@H_403_1@

猜你在找的PHP相关文章