您当前的位置:首页 > 分类 > 技术资讯 > PHP > 正文

使用HMAC-SHA1签名方法

发布时间:2013-10-09 14:52:56      来源:51推一把
【摘要】使用HMAC-SHA1签名方法
/** 
 * @brief 使用HMAC-SHA1算法生成oauth_signature签名值 
 * 
 * @param $key  密钥 
 * @param $str  源串 
 * 
 * @return 签名值 
 */ 
function getSignature($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; 
}