签名加密
/**
* 签名加密函数
*
* @access public
* @param mixed $args 请求参数
* @param mixed $key 秘钥
* @return string
*/
public function makeSignature($args, $key)
{
if(isset($args['sign'])) {
$oldSign = $args['sign'];
unset($args['sign']);
} else {
$oldSign = '';
}
ksort($args);
$requestString = '';
foreach($args as $k => $v) {
$requestString .= $k . '=' . urlencode($v);
}
$newSign = hash_hmac("md5",strtolower($requestString) , $key);
return $newSign;
}
例:http://127.0.0.1/pow/api/?Uname=张三A&pwd=123456
1、获取值
Uname=张三A
pwd=123456
2、对参数名进行升序排序
pwd=123456
Uname=张三A
3、拼接字符串
pwd=123456Uname=张三A
4、对参数值进行urlencode编码
pwd=123456uname=%E5%BC%A0%E4%B8%89A
5、把所有字符转换为小写
pwd=123456uname=%e5%bc%a0%e4%b8%89a
6、哈希加密
哈希算法:md5
加密字符串: pwd=123456uname=%e5%bc%a0%e4%b8%89a
秘钥:512113
例:hash_hmac("md5", pwd=123456uname=%e5%bc%a0%e4%b8%89a , 512113)
生成签名820e286fb97a23d025699b0c61a32198
请求加上生成的签名如:
http://127.0.0.1/pow/api/?Uname=张三A&pwd=123456&sign=820e286fb97a23d025699b0c61a32198

浙公网安备 33010602011771号