Java签名排序,实现php的ksort升序排序

php这边是需要使用ksort排序生成签名

平台要求 通用签名生成步骤

  1. 按照键字母进行正序排序(ASCII 码从小到大排序【字典序】)#
  2. 排序之后的参数按照 key + value + key + value 格式拼接成字符串stringA(不包含‘+’)
  3. 在 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的工具类

posted @ 2023-01-31 11:47  小源博客  阅读(493)  评论(0编辑  收藏  举报