Class Sm3SignGenerator
java.lang.Object
tech.riemann.nif.web.sign.Sm3SignGenerator
- All Implemented Interfaces:
SignGenerator
国密SM3摘要签名生成器(对称摘要比对)
与 HMAC/RSA/SM2 并列纳入策略体系:签名端对规范化后的待签名内容做 SM3 摘要, 验证端使用相同的 secret(作为前缀盐增强)对内容重算摘要并比对,达到「完整性 + 简易认证」效果。
与 HMAC 的区别:HMAC 是带密钥的 MAC(防篡改且需密钥),SM3 在此作为「带密钥前缀的确定性摘要」, 仅依赖对称 secret,更适合轻量、无需非对称密钥对的国密合规场景。
规范化规则与 HMAC 共用 SignGenerator.buildSignContent(Map, String, String, String)。
- Author:
- Kerbores(kerbores@riemann.tech)
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription生成签名generate(Map<String, String> params, String secret, String timestamp, String requestPath, String nonce) 生成签名(完整参数)获取支持的算法boolean验证签名booleanverify(Map<String, String> params, String sign, String secret, String timestamp, String requestPath, String nonce) 验证签名(完整参数)Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface SignGenerator
buildSignContent, bytesToHex, calculateParamsMd5, sign, verify
-
Constructor Details
-
Sm3SignGenerator
public Sm3SignGenerator()
-
-
Method Details
-
generate
Description copied from interface:SignGenerator生成签名签名生成流程: 1. 按ASCII排序参数 2. 拼接成
key1=value1&key2=value2格式 3. 在末尾追加密钥 4. 计算哈希值- Specified by:
generatein interfaceSignGenerator- Parameters:
params- 业务参数(已过滤空 * @param secret 密钥- Returns:
- 签名字符串(十六进制)
-
generate
public String generate(Map<String, String> params, String secret, String timestamp, String requestPath, String nonce) Description copied from interface:SignGenerator生成签名(完整参数)签名内容组成(按字典序排序后连接): 1. 请求参数的SHA-256摘要(paramsMd5,字段名沿用既有结构兼容) 2. 应用密钥(appSecret) 3. 时间戳(timestamp) 4. 请求路径(requestPath) 5. 随机字符串(nonce)
- Specified by:
generatein interfaceSignGenerator- Parameters:
params- 业务参数(已过滤空值)secret- 密钥timestamp- 时间戳(秒)requestPath- 请求路径nonce- 随机字符串- Returns:
- 签名字符串(十六进制)
-
verify
Description copied from interface:SignGenerator验证签名- Specified by:
verifyin interfaceSignGenerator- Parameters:
params- 请求参数sign- 签名值secret- 密钥- Returns:
- 是否验证通过
-
verify
public boolean verify(Map<String, String> params, String sign, String secret, String timestamp, String requestPath, String nonce) Description copied from interface:SignGenerator验证签名(完整参数)- Specified by:
verifyin interfaceSignGenerator- Parameters:
params- 请求参数sign- 签名值secret- 密钥timestamp- 时间戳(秒)requestPath- 请求路径nonce- 随机字符串- Returns:
- 是否验证通过
-
getAlgorithm
Description copied from interface:SignGenerator获取支持的算法- Specified by:
getAlgorithmin interfaceSignGenerator- Returns:
- ical算法
-