H5W3
当前位置:H5W3 > 其他技术问题 > 正文

php实现java的mac hmac_sha1加密算法

求教,php如何实现java的加密算法hmac_sha1?

回答:

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

本文地址:H5W3 » php实现java的mac hmac_sha1加密算法

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址