Module bus.crypto

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(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)
    构造 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
  • Method Summary

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

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

    getKeyByType, getPrivateKey, getPrivateKeyBase64, getPublicKey, getPublicKeyBase64, initKeys, setKey, setLock, 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(String algorithm, KeyPair keyPair)
      构造 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
      Parameters:
      algorithm - 算法,见Algorithm
      keyPair - 密钥对,null表示随机生成
    • Sign

      public Sign(org.miaixz.bus.core.lang.Algorithm algorithm, KeyPair keyPair)
      构造 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
      Parameters:
      algorithm - Algorithm
      keyPair - 密钥对,null表示随机生成
    • 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(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 - 公钥
  • Method Details

    • init

      public Sign init(String algorithm, KeyPair keyPair)
      初始化
      Overrides:
      init in class Asymmetric<Sign>
      Parameters:
      algorithm - 算法
      keyPair - 密钥对,null表示随机生成
      Returns:
      this
    • setParameter

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

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

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

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

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

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