Class SmUtil

java.lang.Object
cn.sinozg.applet.common.utils.SmUtil

public class SmUtil extends Object
Since:
2024-12-03 10:35
Author:
xieyubin
  • Field Details

    • EC

      private static final String EC
      EC
      See Also:
    • STD_NAME

      private static final String STD_NAME
      See Also:
    • ALGORITHM_SM4

      public static final String ALGORITHM_SM4
      See Also:
    • DEFAULT_KEY_SIZE

      private static final int DEFAULT_KEY_SIZE
      SM4算法目前只支持128位(即密钥16字节)
      See Also:
    • ALGORITHM_NAME_ECB_PADDING5

      public static final String ALGORITHM_NAME_ECB_PADDING5
      加密算法/分组加密模式/分组填充方式 PKCS5Padding-以8个字节为一组进行分组加密 定义分组加密模式使用:PKCS5Padding
      See Also:
    • ALGORITHM_NAME_ECB_PADDING7

      public static final String 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

      public static String signSm2(String plainText, String privateKey)
      加签
      Parameters:
      plainText - 内容
      privateKey - 私钥
      Returns:
      加签
    • verifySm2

      public static boolean verifySm2(String plainText, String signature, String publicKey)
      验签
      Parameters:
      plainText - 内容
      signature - 签名
      publicKey - 公钥
      Returns:
      验签结果
    • encryptSm2

      public static String encryptSm2(String plainText, String publicKey)
      加密
      Parameters:
      plainText - 内容
      Returns:
      加密谢谢
    • decryptSm2

      public static String decryptSm2(String input, String privateKey)
      解密
      Parameters:
      input - 密文
      privateKey - 私钥
      Returns:
      解密信息
    • keyPairSm2

      public static KeyPair keyPairSm2()
      SM2算法生成密钥对
      Returns:
      密钥对信息
    • encryptPlusSm3

      public static String encryptPlusSm3(String params, String key)
      sm3算法加密
      Parameters:
      params - 待加密字符串
      key - 密钥
      Returns:
      返回加密后,固定长度=32的16进制字符串
    • encryptSm3

      public static String encryptSm3(String params)
      sm3算法加密
      Parameters:
      params - 待加密字符串
      Returns:
      返回加密后,固定长度=32的16进制字符串
    • matchesSm3

      public static boolean matchesSm3(String input, String encodedParams)
      判断源数据与加密数据是否一致 通过验证原数组和生成的hash数组是否为同一数组,验证2者是否为同一数据
      Parameters:
      input - 原字符串
      encodedParams - 16进制字符串
      Returns:
      校验结果
    • encryptSm4

      public static String encryptSm4(String plainText, String key)
      SM4对称加解密 加密
      Parameters:
      plainText - 待加密的字符串
      key - 密钥
      Returns:
      密文
    • decryptSm4

      public static byte[] decryptSm4(String cipherString, String key)
      SM4对称加解密 解密
      Parameters:
      cipherString - 密文
      key - 密钥
      Returns:
      明文
    • generateKeySm4

      public static String generateKeySm4() throws Exception
      生成密钥
      Returns:
      密钥16位
      Throws:
      Exception - 生成密钥异常
    • sm4Key

      private static byte[] sm4Key(String key) throws NoSuchAlgorithmException
      转为 16字节
      Parameters:
      key - key
      Returns:
      key
      Throws:
      NoSuchAlgorithmException - 异常
    • sm2

      private static byte[] sm2(Object in, String key, boolean encrypt)
      利用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:
      加密