开始使用
鉴权与签名
请求签名生成规则与安全建议。
说明
除 sign 外,将公共参数和业务参数按参数名升序排列,依次拼接参数名与参数值后进行 MD5 计算。
签名规则沿用旧版文档;上线前请以服务端当前鉴权实现为准完成核验。
请参阅鉴权签名说明。
示例
PHP 签名示例
ksort($params);
$payload = '';
foreach ($params as $key => $value) {
if ($key !== 'sign') $payload .= $key . $value;
}
$sign = md5($payload);Java 签名示例
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Map;
import java.util.TreeMap;
public static String sign(Map<String, ?> params) throws NoSuchAlgorithmException {
TreeMap<String, Object> sortedParams = new TreeMap<String, Object>();
for (Map.Entry<String, ?> entry : params.entrySet()) {
if (!"sign".equals(entry.getKey())) {
sortedParams.put(entry.getKey(), entry.getValue());
}
}
StringBuilder payload = new StringBuilder();
for (Map.Entry<String, Object> entry : sortedParams.entrySet()) {
payload.append(entry.getKey());
payload.append(entry.getValue() == null ? "" : String.valueOf(entry.getValue()));
}
byte[] digest = MessageDigest.getInstance("MD5")
.digest(payload.toString().getBytes(StandardCharsets.UTF_8));
StringBuilder sign = new StringBuilder(32);
for (byte value : digest) {
sign.append(String.format("%02x", value & 0xff));
}
return sign.toString();
}