Interface SignGenerator
- All Known Implementing Classes:
HmacSignGenerator, RsaSignGenerator, Sm2SignGenerator, Sm3SignGenerator
public interface SignGenerator
签名生成器接口
用于生成和验证请求签名
实现类: 1. HmacSignGenerator:HMAC-SHA256签名生成器(对称) 2. Sm2SignGenerator:国密SM2签名生成器(非对称) 3. RsaSignGenerator:RSA签名生成器(非对称)
- Author:
- Kerbores(kerbores@riemann.tech)
-
Method Summary
Modifier and TypeMethodDescriptiondefault String构造待签名内容(规范化)default StringbytesToHex(byte[] bytes) 字节数组转十六进制default StringcalculateParamsMd5(Map<String, String> params) 计算请求参数的SHA-256摘要(十六进制)生成签名default Stringgenerate(Map<String, String> params, String secret, String timestamp, String requestPath, String nonce) 生成签名(完整参数)获取支持的算法default Stringsign(String content, PrivateKey privateKey) 使用密钥对象签名(非对称算法专用)default boolean使用密钥对象验签(非对称算法专用)boolean验证签名default booleanverify(Map<String, String> params, String sign, String secret, String timestamp, String requestPath, String nonce) 验证签名(完整参数)
-
Method Details
-
buildSignContent
default String buildSignContent(Map<String, String> params, String timestamp, String requestPath, String nonce) 构造待签名内容(规范化)各算法共用同一套内容规范化规则,仅最后的「签名/哈希」步骤不同(HMAC 用密钥,SM2/RSA 用私钥)。 规范化组成(按字典序排序后连接): 1. 请求参数的SHA-256摘要(paramsMd5,字段名沿用既有结构兼容) 2. 时间戳(timestamp,非空时) 3. 请求路径(requestPath,非空时) 4. 随机字符串(nonce,非空时)
- Parameters:
params- 业务参数timestamp- 时间戳(秒)requestPath- 请求路径nonce- 随机字符串- Returns:
- 规范化后的待签名字符串
-
calculateParamsMd5
-
bytesToHex
-
generate
-
generate
default String generate(Map<String, String> params, String secret, String timestamp, String requestPath, String nonce) 生成签名(完整参数)签名内容组成(按字典序排序后连接): 1. 请求参数的SHA-256摘要(paramsMd5,字段名沿用既有结构兼容) 2. 应用密钥(appSecret) 3. 时间戳(timestamp) 4. 请求路径(requestPath) 5. 随机字符串(nonce)
- Parameters:
params- 业务参数(已过滤空值)secret- 密钥timestamp- 时间戳(秒)requestPath- 请求路径nonce- 随机字符串- Returns:
- 签名字符串(十六进制)
-
verify
-
verify
-
getAlgorithm
-
sign
使用密钥对象签名(非对称算法专用)对称算法(HMAC)不需要密钥对象,默认抛
UnsupportedOperationException; 非对称算法(SM2/RSA)应覆盖此方法接收私钥。- Parameters:
content- 待签名内容(已规范化)privateKey- 私钥- Returns:
- 签名值(Base64 或 Hex 字符串,由实现决定)
-
verify
使用密钥对象验签(非对称算法专用)对称算法(HMAC)不需要密钥对象,默认抛
UnsupportedOperationException; 非对称算法(SM2/RSA)应覆盖此方法接收公钥。- Parameters:
content- 待验签内容(已规范化)signature- 签名值publicKey- 公钥- Returns:
- 是否验证通过
-