Package cn.gmkit.sm3

Class SM3

java.lang.Object
cn.gmkit.sm3.SM3

public final class SM3 extends Object
SM3 对象式入口。

SM3 本身是无状态摘要算法,因此对象式接口主要用于统一整体 API 风格: 可以与 new SM2()new SM4() 保持一致的使用体验。

如果项目更偏好工具类方式,可使用 SM3Util 的静态方法。 两者的摘要结果、HMAC 结果和参数校验行为保持一致。

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    SM3 摘要长度,单位为字节。
  • Constructor Summary

    Constructors
    Constructor
    Description
    SM3()
    创建一个无状态的 SM3 实例。
  • Method Summary

    Modifier and Type
    Method
    Description
    byte[]
    digest(byte[] data)
    计算 SM3 摘要。
    byte[]
    digest(String data)
    计算 UTF-8 字符串的 SM3 摘要。
    byte[]
    digest(String data, Charset charset)
    使用指定字符集计算字符串的 SM3 摘要。
    digestBase64(byte[] data)
    计算 SM3 摘要并输出 Base64 字符串。
    计算 UTF-8 字符串的 SM3 摘要并输出 Base64 字符串。
    digestBase64(String data, Charset charset)
    使用指定字符集计算字符串的 SM3 摘要并输出 Base64 字符串。
    digestHex(byte[] data)
    计算 SM3 摘要并输出十六进制字符串。
    计算 UTF-8 字符串的 SM3 摘要并输出十六进制字符串。
    digestHex(String data, Charset charset)
    使用指定字符集计算字符串的 SM3 摘要并输出十六进制字符串。
    byte[]
    hmac(byte[] key, byte[] data)
    计算 HMAC-SM3。
    byte[]
    hmac(byte[] key, String data)
    计算 UTF-8 字符串的 HMAC-SM3。
    byte[]
    hmac(byte[] key, String data, Charset charset)
    使用指定字符集计算字符串的 HMAC-SM3。
    hmacBase64(byte[] key, byte[] data)
    计算 HMAC-SM3 并输出 Base64 字符串。
    hmacBase64(byte[] key, String data)
    计算 UTF-8 字符串的 HMAC-SM3 并输出 Base64 字符串。
    hmacBase64(byte[] key, String data, Charset charset)
    使用指定字符集计算字符串的 HMAC-SM3 并输出 Base64 字符串。
    hmacHex(byte[] key, byte[] data)
    计算 HMAC-SM3 并输出十六进制字符串。
    hmacHex(byte[] key, String data)
    计算 UTF-8 字符串的 HMAC-SM3 并输出十六进制字符串。
    hmacHex(byte[] key, String data, Charset charset)
    使用指定字符集计算字符串的 HMAC-SM3 并输出十六进制字符串。

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • DIGEST_LENGTH

      public static final int DIGEST_LENGTH
      SM3 摘要长度,单位为字节。
      See Also:
  • Constructor Details

    • SM3

      public SM3()
      创建一个无状态的 SM3 实例。
  • Method Details

    • digest

      public byte[] digest(byte[] data)
      计算 SM3 摘要。
      Parameters:
      data - 输入字节数组
      Returns:
      摘要结果
    • digest

      public byte[] digest(String data)
      计算 UTF-8 字符串的 SM3 摘要。
      Parameters:
      data - 输入字符串
      Returns:
      摘要结果
    • digest

      public byte[] digest(String data, Charset charset)
      使用指定字符集计算字符串的 SM3 摘要。
      Parameters:
      data - 输入字符串
      charset - 字符集;传入 null 时默认使用 UTF-8
      Returns:
      摘要结果
    • digestHex

      public String digestHex(byte[] data)
      计算 SM3 摘要并输出十六进制字符串。
      Parameters:
      data - 输入字节数组
      Returns:
      十六进制摘要
    • digestHex

      public String digestHex(String data)
      计算 UTF-8 字符串的 SM3 摘要并输出十六进制字符串。
      Parameters:
      data - 输入字符串
      Returns:
      十六进制摘要
    • digestHex

      public String digestHex(String data, Charset charset)
      使用指定字符集计算字符串的 SM3 摘要并输出十六进制字符串。
      Parameters:
      data - 输入字符串
      charset - 字符集;传入 null 时默认使用 UTF-8
      Returns:
      十六进制摘要
    • digestBase64

      public String digestBase64(byte[] data)
      计算 SM3 摘要并输出 Base64 字符串。
      Parameters:
      data - 输入字节数组
      Returns:
      Base64 摘要
    • digestBase64

      public String digestBase64(String data)
      计算 UTF-8 字符串的 SM3 摘要并输出 Base64 字符串。
      Parameters:
      data - 输入字符串
      Returns:
      Base64 摘要
    • digestBase64

      public String digestBase64(String data, Charset charset)
      使用指定字符集计算字符串的 SM3 摘要并输出 Base64 字符串。
      Parameters:
      data - 输入字符串
      charset - 字符集;传入 null 时默认使用 UTF-8
      Returns:
      Base64 摘要
    • hmac

      public byte[] hmac(byte[] key, byte[] data)
      计算 HMAC-SM3。
      Parameters:
      key - HMAC 密钥
      data - 输入字节数组
      Returns:
      HMAC 结果
    • hmac

      public byte[] hmac(byte[] key, String data)
      计算 UTF-8 字符串的 HMAC-SM3。
      Parameters:
      key - HMAC 密钥
      data - 输入字符串
      Returns:
      HMAC 结果
    • hmac

      public byte[] hmac(byte[] key, String data, Charset charset)
      使用指定字符集计算字符串的 HMAC-SM3。
      Parameters:
      key - HMAC 密钥
      data - 输入字符串
      charset - 字符集;传入 null 时默认使用 UTF-8
      Returns:
      HMAC 结果
    • hmacHex

      public String hmacHex(byte[] key, byte[] data)
      计算 HMAC-SM3 并输出十六进制字符串。
      Parameters:
      key - HMAC 密钥
      data - 输入字节数组
      Returns:
      十六进制 HMAC
    • hmacHex

      public String hmacHex(byte[] key, String data)
      计算 UTF-8 字符串的 HMAC-SM3 并输出十六进制字符串。
      Parameters:
      key - HMAC 密钥
      data - 输入字符串
      Returns:
      十六进制 HMAC
    • hmacHex

      public String hmacHex(byte[] key, String data, Charset charset)
      使用指定字符集计算字符串的 HMAC-SM3 并输出十六进制字符串。
      Parameters:
      key - HMAC 密钥
      data - 输入字符串
      charset - 字符集;传入 null 时默认使用 UTF-8
      Returns:
      十六进制 HMAC
    • hmacBase64

      public String hmacBase64(byte[] key, byte[] data)
      计算 HMAC-SM3 并输出 Base64 字符串。
      Parameters:
      key - HMAC 密钥
      data - 输入字节数组
      Returns:
      Base64 HMAC
    • hmacBase64

      public String hmacBase64(byte[] key, String data)
      计算 UTF-8 字符串的 HMAC-SM3 并输出 Base64 字符串。
      Parameters:
      key - HMAC 密钥
      data - 输入字符串
      Returns:
      Base64 HMAC
    • hmacBase64

      public String hmacBase64(byte[] key, String data, Charset charset)
      使用指定字符集计算字符串的 HMAC-SM3 并输出 Base64 字符串。
      Parameters:
      key - HMAC 密钥
      data - 输入字符串
      charset - 字符集;传入 null 时默认使用 UTF-8
      Returns:
      Base64 HMAC