签名工具注释修改

This commit is contained in:
2024-12-12 09:30:39 +08:00
parent 469baefb0d
commit ed3070d881

View File

@@ -11,72 +11,16 @@ import java.util.Map;
import java.util.TreeMap; import java.util.TreeMap;
/** /**
* @description: 生成签名 * @description: 签名工具
* @author: dimengzhe * @author: dimengzhe
* @date: 2024/11/28 * @date: 2024/11/28
**/ **/
public class SignatureUtil { public class SignatureUtil {
/**
* 生成请求签名
*
* @param parameters 请求参数
* @param secret 密钥
* @return 签名
*/
public static String generateSignature(Map<String, String> parameters, String secret) throws UnsupportedEncodingException, NoSuchAlgorithmException {
//1.对参数进行排序
Map<String, String> treeMap = new TreeMap<>(parameters);
// 2. 拼接参数字符串
String content = joinParameters(treeMap);
// 3. 将密钥加在参数字符串的前后
content = secret + content + secret;
// 4. 计算签名 (MD5)
return md5(content);
}
/**
* 拼接参数字符串
*
* @param tree 排序后的参数
* @return 拼接后的参数字符串
*/
public static String joinParameters(Map<String, String> tree) throws UnsupportedEncodingException {
StringBuilder builder = new StringBuilder();
for (Map.Entry<String, String> entry : tree.entrySet()) {
if (builder.length() > 0) {
builder.append("&");
}
builder.append(entry.getKey()).append("=");
builder.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
}
return builder.toString();
}
/**
* 计算 MD5
*
* @param content 要计算 MD5 的字符串
* @return MD5 值
*/
public static String md5(String content) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] bytes = md.digest(content.getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02x", b));
}
return sb.toString();
}
/** /**
* 验证签名是否正确 * 验证签名是否正确
* *
* @param parameters 请求参数 * @param parameters 请求参数
* @param secret 密钥 * @param secret 私钥,生成签名时使用,不允许在请求参数中出现
* @return 是否验证通过 * @return 是否验证通过
*/ */
public static ResultBean<Boolean> validateSignature(Map<String, String> parameters, String secret) { public static ResultBean<Boolean> validateSignature(Map<String, String> parameters, String secret) {
@@ -108,4 +52,60 @@ public class SignatureUtil {
} }
return rb.success().setData(valid); return rb.success().setData(valid);
} }
/**
* 生成签名
*
* @param parameters 请求参数
* @param secret 私钥
* @return 签名字符串
*/
private static String generateSignature(Map<String, String> parameters, String secret) throws UnsupportedEncodingException, NoSuchAlgorithmException {
//1.对参数进行排序
Map<String, String> treeMap = new TreeMap<>(parameters);
// 2. 拼接参数字符串
String content = joinParameters(treeMap);
// 3. 将密钥加在参数字符串的前后
content = secret + content + secret;
// 4. 计算签名 (MD5)
return md5(content);
}
/**
* 拼接参数字符串
*
* @param tree 排序后的参数
* @return 拼接后的参数字符串
*/
private static String joinParameters(Map<String, String> tree) throws UnsupportedEncodingException {
StringBuilder builder = new StringBuilder();
for (Map.Entry<String, String> entry : tree.entrySet()) {
if (builder.length() > 0) {
builder.append("&");
}
builder.append(entry.getKey()).append("=");
builder.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
}
return builder.toString();
}
/**
* MD5加密
*
* @param content 要计算 MD5 的字符串
* @return MD5 值
*/
private static String md5(String content) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] bytes = md.digest(content.getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02x", b));
}
return sb.toString();
}
} }