经常有需求类似于:
第一步:设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
第二步:在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。
以往都是$k=$v&
,最后再把末尾的&
去掉,比较麻烦。无意间发现了有个join
函数,用法如下:
/**
* 获取签名
* @param $params array 数组
* @return string 拼接后的字符串MD5
*/
public function getSign($params)
{
ksort($params);
$str = [];
foreach ($params as $k => $v){
if (empty($v)) continue;
$str[] = "{$k}={$v}";
}
return strtoupper(md5(join('&',$str)));
}
评论 (0)