Class Sign

All Implemented Interfaces:
Serializable

public class Sign extends Asymmetric<Sign>
签名包装,Signature 包装类
Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected Signature
    签名,用于签名和验证

    Fields inherited from class org.miaixz.bus.crypto.builtin.asymmetric.Asymmetric

    algorithm, lock, privateKey, publicKey
  • Constructor Summary

    Constructors
    Constructor
    Description
    Sign(String algorithm)
    构造,创建新的私钥公钥对
    Sign(String algorithm, byte[] privateKey, byte[] publicKey)
    构造 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
    Sign(String algorithm, String privateKey, String publicKey)
    构造 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
    Sign(String algorithm, KeyPair keyPair)
    构造 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
    Sign(String algorithm, PrivateKey privateKey, PublicKey publicKey)
    构造
    Sign(org.miaixz.bus.core.lang.Algorithm algorithm)
    构造,创建新的私钥公钥对
    Sign(org.miaixz.bus.core.lang.Algorithm algorithm, byte[] privateKey, byte[] publicKey)
    构造 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
    Sign(org.miaixz.bus.core.lang.Algorithm algorithm, String privateKey, String publicKey)
    构造 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
    Sign(org.miaixz.bus.core.lang.Algorithm algorithm, KeyPair keyPair)
    构造 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
    Sign(org.miaixz.bus.core.lang.Algorithm algorithm, PrivateKey privateKey, PublicKey publicKey)
    构造 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
  • Method Summary

    Modifier and Type
    Method
    Description
    digestHex(InputStream data, int bufferLength)
    生成签名,并转为16进制字符串 使用默认缓存大小,见 Normal._8192
    获得签名对象
    init(String algorithm, PrivateKey privateKey, PublicKey publicKey)
    初始化
    设置Certificate 为PublicKey 如果Certificate是X509Certificate,我们需要检查是否有密钥扩展
    设置签名的参数
    设置签名
    byte[]
    sign(byte[] data)
    用私钥对信息生成数字签名
    byte[]
    生成签名,使用默认缓存大小,见 Normal._8192
    byte[]
    sign(InputStream data, int bufferLength)
    生成签名
    byte[]
    sign(String data)
    生成文件签名
    byte[]
    sign(String data, Charset charset)
    生成文件签名
    signHex(byte[] data)
    生成签名,并转为16进制字符串
    生成签名,并转为16进制字符串 使用默认缓存大小,见 Normal._8192
    生成文件签名
    signHex(String data, Charset charset)
    生成文件签名,并转为16进制字符串
    boolean
    verify(byte[] data, byte[] sign)
    用公钥检验数字签名的合法性

    Methods inherited from class org.miaixz.bus.crypto.builtin.asymmetric.Asymmetric

    getKeyByType, getPrivateKey, getPrivateKeyBase64, getPublicKey, getPublicKeyBase64, initKeys, setKey, setPrivateKey, setPublicKey

    Methods inherited from class java.lang.Object

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

    • signature

      protected Signature signature
      签名,用于签名和验证
  • Constructor Details

    • Sign

      public Sign(org.miaixz.bus.core.lang.Algorithm algorithm)
      构造,创建新的私钥公钥对
      Parameters:
      algorithm - Algorithm
    • Sign

      public Sign(String algorithm)
      构造,创建新的私钥公钥对
      Parameters:
      algorithm - 算法
    • Sign

      public Sign(org.miaixz.bus.core.lang.Algorithm algorithm, String privateKey, String publicKey)
      构造 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
      Parameters:
      algorithm - Algorithm
      privateKey - 私钥Hex或Base64表示
      publicKey - 公钥Hex或Base64表示
    • Sign

      public Sign(org.miaixz.bus.core.lang.Algorithm algorithm, byte[] privateKey, byte[] publicKey)
      构造 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
      Parameters:
      algorithm - Algorithm
      privateKey - 私钥
      publicKey - 公钥
    • Sign

      public Sign(org.miaixz.bus.core.lang.Algorithm algorithm, KeyPair keyPair)
      构造 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
      Parameters:
      algorithm - Algorithm
      keyPair - 密钥对(包括公钥和私钥)
    • Sign

      public Sign(org.miaixz.bus.core.lang.Algorithm algorithm, PrivateKey privateKey, PublicKey publicKey)
      构造 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
      Parameters:
      algorithm - Algorithm
      privateKey - 私钥
      publicKey - 公钥
    • Sign

      public Sign(String algorithm, String privateKey, String publicKey)
      构造 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
      Parameters:
      algorithm - 非对称加密算法
      privateKey - 私钥Base64
      publicKey - 公钥Base64
    • Sign

      public Sign(String algorithm, byte[] privateKey, byte[] publicKey)
      构造 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
      Parameters:
      algorithm - 算法
      privateKey - 私钥
      publicKey - 公钥
    • Sign

      public Sign(String algorithm, KeyPair keyPair)
      构造 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
      Parameters:
      algorithm - 算法,见Algorithm
      keyPair - 密钥对(包括公钥和私钥)
    • Sign

      public Sign(String algorithm, PrivateKey privateKey, PublicKey publicKey)
      构造

      私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证

      Parameters:
      algorithm - 算法
      privateKey - 私钥
      publicKey - 公钥
  • Method Details

    • init

      public Sign init(String algorithm, PrivateKey privateKey, PublicKey publicKey)
      初始化
      Overrides:
      init in class Asymmetric<Sign>
      Parameters:
      algorithm - 算法
      privateKey - 私钥
      publicKey - 公钥
      Returns:
      this
    • setParameter

      public Sign setParameter(AlgorithmParameterSpec params)
      设置签名的参数
      Parameters:
      params - AlgorithmParameterSpec
      Returns:
      this
    • sign

      public byte[] sign(String data, Charset charset)
      生成文件签名
      Parameters:
      data - 被签名数据
      charset - 编码
      Returns:
      签名
    • sign

      public byte[] sign(String data)
      生成文件签名
      Parameters:
      data - 被签名数据
      Returns:
      签名
    • signHex

      public String signHex(String data, Charset charset)
      生成文件签名,并转为16进制字符串
      Parameters:
      data - 被签名数据
      charset - 编码
      Returns:
      签名
    • signHex

      public String signHex(String data)
      生成文件签名
      Parameters:
      data - 被签名数据
      Returns:
      签名
    • sign

      public byte[] sign(byte[] data)
      用私钥对信息生成数字签名
      Parameters:
      data - 加密数据
      Returns:
      签名
    • signHex

      public String signHex(byte[] data)
      生成签名,并转为16进制字符串
      Parameters:
      data - 被签名数据
      Returns:
      签名
    • signHex

      public String signHex(InputStream data)
      生成签名,并转为16进制字符串 使用默认缓存大小,见 Normal._8192
      Parameters:
      data - 被签名数据
      Returns:
      签名
    • sign

      public byte[] sign(InputStream data)
      生成签名,使用默认缓存大小,见 Normal._8192
      Parameters:
      data - InputStream 数据流
      Returns:
      签名bytes
    • digestHex

      public String digestHex(InputStream data, int bufferLength)
      生成签名,并转为16进制字符串 使用默认缓存大小,见 Normal._8192
      Parameters:
      data - 被签名数据
      bufferLength - 缓存长度,不足1使用 Normal._8192 做为默认值
      Returns:
      签名
    • sign

      public byte[] sign(InputStream data, int bufferLength)
      生成签名
      Parameters:
      data - InputStream 数据流
      bufferLength - 缓存长度,不足1使用 Normal._8192 做为默认值
      Returns:
      签名bytes
    • verify

      public boolean verify(byte[] data, byte[] sign)
      用公钥检验数字签名的合法性
      Parameters:
      data - 数据
      sign - 签名
      Returns:
      是否验证通过
    • getSignature

      public Signature getSignature()
      获得签名对象
      Returns:
      Signature
    • setSignature

      public Sign setSignature(Signature signature)
      设置签名
      Parameters:
      signature - 签名对象 Signature
      Returns:
      自身 Crypto
    • setCertificate

      public Sign setCertificate(Certificate certificate)
      设置Certificate 为PublicKey 如果Certificate是X509Certificate,我们需要检查是否有密钥扩展
      Parameters:
      certificate - Certificate
      Returns:
      this