Package cn.sinozg.applet.common.utils
Class SmUtil
java.lang.Object
cn.sinozg.applet.common.utils.SmUtil
- Since:
- 2024-12-03 10:35
- Author:
- xieyubin
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String加密算法/分组加密模式/分组填充方式 PKCS5Padding-以8个字节为一组进行分组加密 定义分组加密模式使用:PKCS5Paddingstatic final Stringstatic final Stringprivate static final org.bouncycastle.jce.provider.BouncyCastleProviderprivate static final intSM4算法目前只支持128位(即密钥16字节)private static final StringECprivate static final org.slf4j.Loggerprivate static final String -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic StringdecryptSm2(String input, String privateKey) 解密static byte[]decryptSm4(String cipherString, String key) SM4对称加解密 解密static StringencryptPlusSm3(String params, String key) sm3算法加密static StringencryptSm2(String plainText, String publicKey) 加密static StringencryptSm3(String params) sm3算法加密static StringencryptSm4(String plainText, String key) SM4对称加解密 加密static String生成密钥private static byte[]hmac(byte[] key, byte[] input) 通过密钥进行加密 指定密钥进行加密static KeyPairSM2算法生成密钥对static booleanmatchesSm3(String input, String encodedParams) 判断源数据与加密数据是否一致 通过验证原数组和生成的hash数组是否为同一数组,验证2者是否为同一数据static String加签private static byte[]利用sm2 算法加解密private static <T extends Key>
T生成 sm2的密钥private static byte[]sm3Hash(byte[] params) 返回长度=32的byte数组 生成对应的hash值private static byte[]转为 16字节static boolean验签
-
Field Details
-
EC
EC- See Also:
-
STD_NAME
- See Also:
-
ALGORITHM_SM4
- See Also:
-
DEFAULT_KEY_SIZE
private static final int DEFAULT_KEY_SIZESM4算法目前只支持128位(即密钥16字节)- See Also:
-
ALGORITHM_NAME_ECB_PADDING5
加密算法/分组加密模式/分组填充方式 PKCS5Padding-以8个字节为一组进行分组加密 定义分组加密模式使用:PKCS5Padding- See Also:
-
ALGORITHM_NAME_ECB_PADDING7
- See Also:
-
BOUNCY
private static final org.bouncycastle.jce.provider.BouncyCastleProvider BOUNCY -
LOG
private static final org.slf4j.Logger LOG
-
-
Constructor Details
-
SmUtil
public SmUtil()
-
-
Method Details
-
signSm2
加签- Parameters:
plainText- 内容privateKey- 私钥- Returns:
- 加签
-
verifySm2
验签- Parameters:
plainText- 内容signature- 签名publicKey- 公钥- Returns:
- 验签结果
-
encryptSm2
加密- Parameters:
plainText- 内容- Returns:
- 加密谢谢
-
decryptSm2
解密- Parameters:
input- 密文privateKey- 私钥- Returns:
- 解密信息
-
keyPairSm2
SM2算法生成密钥对- Returns:
- 密钥对信息
-
encryptPlusSm3
sm3算法加密- Parameters:
params- 待加密字符串key- 密钥- Returns:
- 返回加密后,固定长度=32的16进制字符串
-
encryptSm3
sm3算法加密- Parameters:
params- 待加密字符串- Returns:
- 返回加密后,固定长度=32的16进制字符串
-
matchesSm3
判断源数据与加密数据是否一致 通过验证原数组和生成的hash数组是否为同一数组,验证2者是否为同一数据- Parameters:
input- 原字符串encodedParams- 16进制字符串- Returns:
- 校验结果
-
encryptSm4
SM4对称加解密 加密- Parameters:
plainText- 待加密的字符串key- 密钥- Returns:
- 密文
-
decryptSm4
SM4对称加解密 解密- Parameters:
cipherString- 密文key- 密钥- Returns:
- 明文
-
generateKeySm4
生成密钥- Returns:
- 密钥16位
- Throws:
Exception- 生成密钥异常
-
sm4Key
转为 16字节- Parameters:
key- key- Returns:
- key
- Throws:
NoSuchAlgorithmException- 异常
-
sm2
利用sm2 算法加解密- Parameters:
in- 输入 字符串或者是字节数组key- 密钥encrypt- 是否加密- Returns:
- 处理后结果
-
sm2Key
private static <T extends Key> T sm2Key(String key, boolean pub, boolean signature) throws NoSuchAlgorithmException, InvalidKeySpecException 生成 sm2的密钥- Parameters:
key- 密钥pub- 是否公钥signature- 是否签名- Returns:
- 密钥
- Throws:
NoSuchAlgorithmException- 异常InvalidKeySpecException- 异常
-
sm3Hash
private static byte[] sm3Hash(byte[] params) 返回长度=32的byte数组 生成对应的hash值- Parameters:
params- 参数- Returns:
- hash值
-
hmac
private static byte[] hmac(byte[] key, byte[] input) 通过密钥进行加密 指定密钥进行加密- Parameters:
key- 密钥input- 被加密的byte数组- Returns:
- 加密
-