Class SM3
java.lang.Object
tech.riemann.nif.utils.codec.SM3
SM3密码哈希算法工具类(对标MD5,SHA-1,SHA-256等散列算法)
SM3是中国国家标准的密码散列函数,用于生成密码的安全哈希值
本类提供了密码哈希生成和验证功能,使用盐值增强安全性
- Author:
- Kerbores(kerbores@riemann.tech)
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription对明文进行SM3摘要(无盐,确定性摘要)hashPassword(String password) 对密码进行SM3哈希处理(带盐值)booleanverifyPassword(String password, String hashedPassword) 验证密码是否与存储的哈希值匹配
-
Constructor Details
-
SM3
public SM3()
-
-
Method Details
-
digest
对明文进行SM3摘要(无盐,确定性摘要)适用于签名/完整性校验等需要确定性摘要的场景:相同输入始终得到相同输出。 区别于
hashPassword(String)(带随机盐,用于密码存储)。- Parameters:
plaintext- 明文(UTF-8)- Returns:
- 64 位十六进制摘要;算法不可用时返回 null
-
hashPassword
对密码进行SM3哈希处理(带盐值)该方法使用SM3密码哈希算法对密码进行安全哈希处理,采用加盐策略增强安全性, 有效防止彩虹表攻击。处理流程: 1. 生成16字节的随机盐值 2. 对密码进行SM3哈希 3. 将盐值与密码哈希混合 4. 再次进行SM3哈希得到最终哈希值 5. 将盐值与最终哈希值混合后进行Base64编码返回
- Parameters:
password- 明文密码(UTF-8编码)- Returns:
- 包含盐值的Base64编码哈希值(格式:盐值+哈希值混合后Base64编码);失败返回null
- See Also:
-
verifyPassword
验证密码是否与存储的哈希值匹配该方法用于验证用户输入的密码是否与存储的哈希值匹配。验证流程: 1. 对存储的Base64编码哈希值进行解码 2. 校验数据长度有效性 3. 从解码数据中提取盐值 4. 使用相同的盐值对输入密码进行SM3哈希处理 5. 比较计算得到的哈希值与存储的哈希值是否相等
- Parameters:
password- 用户输入的明文密码(UTF-8编码)hashedPassword- 存储的包含盐值的Base64编码哈希值- Returns:
- 如果密码匹配返回true,否则返回false;数据格式无效也返回false
- See Also:
-