Package cn.gmkit.sm4
Class SM4
java.lang.Object
cn.gmkit.sm4.SM4
SM4 对象式入口。
适合在一个实例上重复执行密钥生成、分组模式配置下的加解密,以及绑定安全上下文后的持续调用。
如果业务更习惯工具类风格,可使用 SM4Util 的静态方法。两套接口共享同一套底层实现,
因此默认行为、错误提示和兼容策略保持一致。
兼容性说明: 支持 JDK 8 及以上版本,依赖 BouncyCastle Provider 提供 SM4 算法实现。
-
Constructor Summary
ConstructorsConstructorDescriptionSM4()创建一个使用默认安全上下文的 SM4 实例。SM4(GmSecurityContext securityContext) 创建一个绑定指定安全上下文的 SM4 实例。 -
Method Summary
Modifier and TypeMethodDescriptionbyte[]decrypt(byte[] key, byte[] ciphertext) 使用默认配置解密。byte[]decrypt(byte[] key, byte[] ciphertext, SM4Options options) 使用指定配置解密。byte[]decrypt(byte[] key, SM4CipherResult result, SM4Options options) 解密SM4CipherResult。byte[]decryptHex(String keyHex, String ciphertextHex, SM4Options options) 使用十六进制密钥解密十六进制密文。decryptToString(byte[] key, byte[] ciphertext, Charset charset, SM4Options options) 解密并使用指定字符集解码。decryptToString(byte[] key, SM4CipherResult result, Charset charset, SM4Options options) 解密并使用指定字符集解码。decryptToUtf8(byte[] key, byte[] ciphertext, SM4Options options) 解密并按 UTF-8 解码返回字符串。decryptToUtf8(byte[] key, SM4CipherResult result, SM4Options options) 解密SM4CipherResult并按 UTF-8 解码返回字符串。encrypt(byte[] key, byte[] data) 使用默认配置加密。encrypt(byte[] key, byte[] data, SM4Options options) 使用指定配置加密。encrypt(byte[] key, String data, SM4Options options) 使用 UTF-8 文本加密。encrypt(byte[] key, String data, Charset charset, SM4Options options) 使用指定字符集编码文本后加密。encryptHex(String keyHex, byte[] data, SM4Options options) 使用十六进制密钥加密字节数组。encryptHex(String keyHex, String data, SM4Options options) 使用十六进制密钥加密 UTF-8 文本。byte[]生成 SM4 密钥。生成十六进制形式的 SM4 密钥。返回当前实例绑定的安全上下文。
-
Constructor Details
-
SM4
public SM4()创建一个使用默认安全上下文的 SM4 实例。 -
SM4
创建一个绑定指定安全上下文的 SM4 实例。- Parameters:
securityContext- Provider 和随机源配置;传入null时回退为默认配置
-
-
Method Details
-
securityContext
返回当前实例绑定的安全上下文。- Returns:
- 当前实例使用的安全上下文
-
generateKey
public byte[] generateKey()生成 SM4 密钥。- Returns:
- 16 字节密钥
-
generateKeyHex
生成十六进制形式的 SM4 密钥。- Returns:
- 十六进制密钥
-
encryptHex
使用十六进制密钥加密 UTF-8 文本。- Parameters:
keyHex- 十六进制密钥data- UTF-8 文本options- 加密配置- Returns:
- 密文结果
-
encryptHex
使用十六进制密钥加密字节数组。- Parameters:
keyHex- 十六进制密钥data- 明文字节数组options- 加密配置- Returns:
- 密文结果
-
encrypt
使用默认配置加密。- Parameters:
key- 16 字节密钥data- 明文字节数组- Returns:
- 密文结果
-
encrypt
使用 UTF-8 文本加密。- Parameters:
key- 16 字节密钥data- 明文字符串options- 加密配置- Returns:
- 密文结果
-
encrypt
使用指定字符集编码文本后加密。- Parameters:
key- 16 字节密钥data- 明文字符串charset- 字符集;传入null时默认使用 UTF-8options- 加密配置- Returns:
- 密文结果
-
encrypt
使用指定配置加密。- Parameters:
key- 16 字节密钥data- 明文字节数组options- 加密配置,传入null时使用默认值- Returns:
- 密文结果
-
decryptHex
使用十六进制密钥解密十六进制密文。- Parameters:
keyHex- 十六进制密钥ciphertextHex- 十六进制密文options- 解密配置- Returns:
- 明文字节数组
-
decryptToUtf8
解密并按 UTF-8 解码返回字符串。- Parameters:
key- 16 字节密钥ciphertext- 密文字节数组options- 解密配置- Returns:
- UTF-8 字符串
-
decryptToUtf8
解密SM4CipherResult并按 UTF-8 解码返回字符串。- Parameters:
key- 16 字节密钥result- 密文结果,若包含 AEAD tag 会自动并入配置options- 解密配置- Returns:
- UTF-8 字符串
-
decryptToString
解密并使用指定字符集解码。- Parameters:
key- 16 字节密钥ciphertext- 密文字节数组charset- 字符集;传入null时默认使用 UTF-8options- 解密配置- Returns:
- 解码后的字符串
-
decryptToString
public String decryptToString(byte[] key, SM4CipherResult result, Charset charset, SM4Options options) 解密并使用指定字符集解码。- Parameters:
key- 16 字节密钥result- 密文结果charset- 字符集;传入null时默认使用 UTF-8options- 解密配置- Returns:
- 解码后的字符串
-
decrypt
解密SM4CipherResult。- Parameters:
key- 16 字节密钥result- 密文结果,若包含 AEAD tag 会自动并入配置options- 解密配置- Returns:
- 明文字节数组
-
decrypt
public byte[] decrypt(byte[] key, byte[] ciphertext) 使用默认配置解密。- Parameters:
key- 16 字节密钥ciphertext- 密文字节数组- Returns:
- 明文字节数组
-
decrypt
使用指定配置解密。- Parameters:
key- 16 字节密钥ciphertext- 密文字节数组options- 解密配置,传入null时使用默认值- Returns:
- 明文字节数组
-