background image

PHP

实例 使用 HMAC-SHA1 签名方法

本篇文章是对使用 HMAC-SHA1 的签名方法进行了详细的分析介绍,需要的朋友参考下
加密算法:
使用 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

);