2. 对排序后的map进行序列化处理成待签名字符串,拼接后的待签名字符串为
app_id=aabbc&format=xml&sign_type=HMAC-SHA1×tamp=2017-06-08 09:38:00
3. 根据HMAC-SHA1算法使用密钥提取待签名字符串的摘要(hash)签名并进行base_encode编码(便于显性传输和对比),假设签名密钥为 test ,则提取出的摘要签名并进行base_encode的值为
JqoEqPIVVor0eyRHMYiZftsycVo=
注意:由于有些数据根据HTTP协议需求,在网络传输过程中需要进行URLencoding,这样接收方才可以接收到正确的参数,但如果这个参数参与签名,那么待签名字符串必须是字符串原值而非URLencoding 的值。
PHP示例
/**
* 使用密钥生成HMAC-Sha1签名
* @param array $params 请求参数
* @param string $signKey 签名密钥
* @return string
*/
function hmacSha1Sign($params,$signKey)
{
ksort($params);
$paramString = '';
foreach ($params as $key => $value) {
if (is_null($value) || $value=='' || $key == 'sign') {
continue;
}
$paramString .= $key.'='.$value.'&';
}
$paramString = substr($paramString,0,-1);
$sign = base_encode(hash_hmac("sha1", $paramString, $signKey, $raw_output=TRUE));
return $sign;
}
Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务