Java签名排序,实现php的ksort升序排序
php这边是需要使用ksort排序生成签名
平台要求 通用签名生成步骤
- 按照键字母进行正序排序(ASCII 码从小到大排序【字典序】)#
- 排序之后的参数按照 key + value + key + value 格式拼接成字符串stringA(不包含‘+’)
- 在 stringA 最后拼接上 token 得到 stringSignTemp 字符串,并对 stringSignTemp 进行 MD5 运算,得到 signid
//对接平台PHP示例
public static function getApiSign($params, $token)
{
unset($params['signid']);
ksort($params);
$str = '';
foreach ($params as $key => $val) {
$str .= $key . $val;
}
return md5($str . $token);
}
我们使用java实现一下
public static String sign(final Map<String, Object> data,String token) {
Set<String> keySet = data.keySet();
String[] keyArray = keySet.toArray(new String[0]);
Arrays.sort(keyArray);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < keyArray.length; i++) {
if (String.valueOf(data.get(keyArray[i])).length() > 0) {
sb.append(keyArray[i]).append(data.get(keyArray[i]));
}
}
sb.append(token);
return SecureUtil.md5(sb.toString());
}
SecureUtil.md5()是调用的hutool的工具类