Class SM4
SM4是中国国家密码标准的对称加密算法,用于数据加密
本类提供了数据加密、解密功能,支持GCM模式(认证加密,防篡改)
- Author:
- Kerbores(kerbores@riemann.tech)
-
Nested Class Summary
Nested Classes -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondecrypt(SM4.SM4Result result, String base64Key) 使用SM4算法解密数据(GCM模式,无填充)decryptFromString(String encryptedStr, String base64Key) 从字符串格式的加密数据中解密出明文decryptHex(String hexData, String hexKey) 使用十六进制格式的密钥解密数据(GCM模式,无填充)使用SM4算法加密数据(GCM模式,无填充)encryptHex(String data, String hexKey) 使用十六进制格式的密钥加密数据(GCM模式,无填充)encryptToString(String data, String base64Key) 使用SM4算法加密数据并返回字符串格式结果生成SM4算法的随机密钥(十六进制格式)生成SM4算法的随机密钥
-
Constructor Details
-
SM4
public SM4()
-
-
Method Details
-
generateKey
生成SM4算法的随机密钥该方法使用安全随机数生成器生成16字节(128位)的随机密钥, 符合SM4算法的密钥长度要求。生成的密钥经过Base64编码后返回, 便于存储和传输。
- Returns:
- Base64编码的16字节随机密钥
- See Also:
-
generateHexKey
生成SM4算法的随机密钥(十六进制格式)该方法使用安全随机数生成器生成16字节(128位)的随机密钥, 符合SM4算法的密钥长度要求。生成的密钥经过十六进制编码后返回, 便于在需要十六进制密钥格式的场景中使用。
- Returns:
- 十六进制编码的16字节随机密钥(长度为32个字符)
- See Also:
-
encrypt
使用SM4算法加密数据(GCM模式,无填充)该方法使用Base64编码的密钥对明文数据进行加密,采用GCM模式并生成随机Nonce。 GCM模式提供认证加密(AEAD),同时保证机密性和完整性。 加密结果包含Nonce和加密后的数据(含认证标签),均以Base64编码返回。
- Parameters:
data- 待加密的明文字符串(UTF-8编码)base64Key- Base64编码的16字节SM4密钥- Returns:
- SM4Result对象,包含Base64编码的Nonce和加密数据;加密失败返回null
- See Also:
-
encryptToString
使用SM4算法加密数据并返回字符串格式结果该方法是encrypt方法的便捷封装,将加密结果转换为字符串格式, 便于直接存储或传输。字符串格式为 "nonce.data",其中nonce和data均为Base64编码。
- Parameters:
data- 待加密的明文字符串(UTF-8编码)base64Key- Base64编码的16字节SM4密钥- Returns:
- 加密结果字符串,格式为 "nonce.data"(均为Base64编码);加密失败返回null
- See Also:
-
decryptFromString
从字符串格式的加密数据中解密出明文该方法是decrypt方法的便捷封装,用于处理字符串格式的加密结果。 输入字符串格式为 "nonce.data",其中nonce和data均为Base64编码。 方法先将字符串解析为SM4Result对象,再调用decrypt方法进行解密。
- Parameters:
encryptedStr- 加密结果字符串,格式为 "nonce.data"(均为Base64编码)base64Key- Base64编码的16字节SM4密钥- Returns:
- 解密后的明文字符串(UTF-8编码);解密失败返回null
- See Also:
-
decrypt
使用SM4算法解密数据(GCM模式,无填充)该方法使用Base64编码的密钥对加密数据进行解密。需要提供包含Nonce 和加密数据的SM4Result对象,解密后返回UTF-8编码的明文字符串。 GCM模式会验证数据完整性,如果数据被篡改会抛出异常。
- Parameters:
result- SM4Result对象,包含Base64编码的Nonce和加密数据base64Key- Base64编码的16字节SM4密钥- Returns:
- 解密后的明文字符串(UTF-8编码);解密失败返回null
- See Also:
-
encryptHex
使用十六进制格式的密钥加密数据(GCM模式,无填充)该方法使用十六进制编码的密钥对明文数据进行加密,采用GCM模式并生成随机Nonce。 加密结果将Nonce(前12字节)和加密数据(含认证标签)拼接后转换为十六进制字符串返回。
- Parameters:
data- 待加密的明文字符串(UTF-8编码)hexKey- 十六进制表示的16字节SM4密钥(长度为32个字符)- Returns:
- 十六进制编码的加密结果(前24个字符为Nonce,后续为加密数据+认证标签);加密失败返回null
- See Also:
-
decryptHex
使用十六进制格式的密钥解密数据(GCM模式,无填充)该方法使用十六进制编码的密钥对加密数据进行解密。输入的加密数据格式为: 前12字节(24个十六进制字符)为Nonce,后续为加密数据(含认证标签)。 解密后返回UTF-8编码的明文字符串。 GCM模式会验证数据完整性,如果数据被篡改会抛出异常。
- Parameters:
hexData- 十六进制表示的加密数据(前24个字符为Nonce,后续为加密内容+认证标签)hexKey- 十六进制表示的16字节SM4密钥(长度为32个字符)- Returns:
- 解密后的明文字符串(UTF-8编码);解密失败返回null
- See Also:
-