Class Keeper

java.lang.Object
org.miaixz.bus.crypto.Keeper

public class Keeper extends Object
密钥工具
 1、生成密钥(单密钥、密钥对)
 2、读取密钥文件
 
Since:
Java 17+
Author:
Kimi Liu
  • Field Details

    • DEFAULT_KEY_SIZE

      public static final int DEFAULT_KEY_SIZE
      默认密钥字节数
       RSA/DSA
       Default Keysize 1024
       Keysize must be a multiple of 64, ranging from 512 to 1024 (inclusive).
       
      See Also:
    • TYPE_JKS

      public static final String TYPE_JKS
      Java密钥库(Java Key Store,JKS)KEY_STORE
      See Also:
    • TYPE_JCEKS

      public static final String TYPE_JCEKS
      jceks
      See Also:
    • TYPE_PKCS12

      public static final String TYPE_PKCS12
      PKCS12是公钥加密标准,它规定了可包含所有私钥、公钥和证书。其以二进制格式存储,也称为 PFX 文件
      See Also:
    • TYPE_X509

      public static final String TYPE_X509
      Certification类型:X.509
      See Also:
  • Constructor Details

    • Keeper

      public Keeper()
  • Method Details

    • generateKey

      public static SecretKey generateKey(String algorithm)
      生成 SecretKey,仅用于对称加密和摘要算法密钥生成
      Parameters:
      algorithm - 算法,支持PBE算法
      Returns:
      SecretKey
    • generateKey

      public static SecretKey generateKey(String algorithm, int keySize)
      生成 SecretKey,仅用于对称加密和摘要算法密钥生成 当指定keySize<0时,AES默认长度为128,其它算法不指定。
      Parameters:
      algorithm - 算法,支持PBE算法
      keySize - 密钥长度,<0表示不设定密钥长度,即使用默认长度
      Returns:
      SecretKey
    • generateKey

      public static SecretKey generateKey(String algorithm, int keySize, SecureRandom random)
      生成 SecretKey,仅用于对称加密和摘要算法密钥生成 当指定keySize<0时,AES默认长度为128,其它算法不指定。
      Parameters:
      algorithm - 算法,支持PBE算法
      keySize - 密钥长度,<0表示不设定密钥长度,即使用默认长度
      random - 随机数生成器,null表示默认
      Returns:
      SecretKey
    • generateKey

      public static SecretKey generateKey(String algorithm, byte[] key)
      生成 SecretKey,仅用于对称加密和摘要算法密钥生成
      Parameters:
      algorithm - 算法
      key - 密钥,如果为null 自动生成随机密钥
      Returns:
      SecretKey
    • generateDESKey

      public static SecretKey generateDESKey(String algorithm, byte[] key)
      生成 SecretKey
      Parameters:
      algorithm - DES算法,包括DES、DESede等
      key - 密钥
      Returns:
      SecretKey
    • generatePBEKey

      public static SecretKey generatePBEKey(String algorithm, char[] password)
      生成PBE SecretKey
      Parameters:
      algorithm - PBE算法,包括:PBEWithMD5AndDES、PBEWithSHA1AndDESede、PBEWithSHA1AndRC2_40等
      password - 口令
      Returns:
      SecretKey
    • generateKey

      public static SecretKey generateKey(String algorithm, KeySpec keySpec)
      生成 SecretKey,仅用于对称加密和摘要算法
      Parameters:
      algorithm - 算法
      keySpec - KeySpec
      Returns:
      SecretKey
    • isEmpty

      public static boolean isEmpty(KeyPair keyPair)
      检查KeyPair 是否为空,空的条件是:
      Parameters:
      keyPair - 密钥对
      Returns:
      是否为空
    • generateRSAPrivateKey

      public static PrivateKey generateRSAPrivateKey(byte[] key)
      生成RSA私钥,仅用于非对称加密 采用PKCS#8规范,此规范定义了私钥信息语法和加密私钥语法 算法见:...
      Parameters:
      key - 密钥,必须为DER编码存储
      Returns:
      RSA私钥 PrivateKey
    • generatePrivateKey

      public static PrivateKey generatePrivateKey(String algorithm, byte[] key)
      生成私钥,仅用于非对称加密 采用PKCS#8规范,此规范定义了私钥信息语法和加密私钥语法 算法见:...
      Parameters:
      algorithm - 算法,如RSA、EC、SM2等
      key - 密钥,PKCS#8格式
      Returns:
      私钥 PrivateKey
    • generatePrivateKey

      public static PrivateKey generatePrivateKey(String algorithm, KeySpec keySpec)
      生成私钥,仅用于非对称加密 算法见:...
      Parameters:
      algorithm - 算法,如RSA、EC、SM2等
      keySpec - KeySpec
      Returns:
      私钥 PrivateKey
    • generatePrivateKey

      public static PrivateKey generatePrivateKey(KeyStore keyStore, String alias, char[] password)
      生成私钥,仅用于非对称加密
      Parameters:
      keyStore - KeyStore
      alias - 别名
      password - 密码
      Returns:
      私钥 PrivateKey
    • generateRSAPublicKey

      public static PublicKey generateRSAPublicKey(byte[] key)
      生成RSA公钥,仅用于非对称加密 采用X509证书规范 算法见:...
      Parameters:
      key - 密钥,必须为DER编码存储
      Returns:
      公钥 PublicKey
    • generatePublicKey

      public static PublicKey generatePublicKey(String algorithm, byte[] key)
      生成公钥,仅用于非对称加密 采用X509证书规范 算法见:...
      Parameters:
      algorithm - 算法
      key - 密钥,必须为DER编码存储
      Returns:
      公钥 PublicKey
    • generatePublicKey

      public static PublicKey generatePublicKey(String algorithm, KeySpec keySpec)
      生成公钥,仅用于非对称加密 算法见:...
      Parameters:
      algorithm - 算法
      keySpec - KeySpec
      Returns:
      公钥 PublicKey
    • getRSAPublicKey

      public static PublicKey getRSAPublicKey(PrivateKey privateKey)
      通过RSA私钥生成RSA公钥
      Parameters:
      privateKey - RSA私钥
      Returns:
      RSA公钥,null表示私钥不被支持
    • getRSAPublicKey

      public static PublicKey getRSAPublicKey(String modulus, String publicExponent)
      获得RSA公钥对象
      Parameters:
      modulus - Modulus
      publicExponent - Public Exponent
      Returns:
      公钥
    • getRSAPublicKey

      public static PublicKey getRSAPublicKey(BigInteger modulus, BigInteger publicExponent)
      获得RSA公钥对象
      Parameters:
      modulus - Modulus
      publicExponent - Public Exponent
      Returns:
      公钥
    • generateKeyPair

      public static KeyPair generateKeyPair(String algorithm)
      生成用于非对称加密的公钥和私钥,仅用于非对称加密 密钥对生成算法见:...
      Parameters:
      algorithm - 非对称加密算法
      Returns:
      KeyPair
    • generateKeyPair

      public static KeyPair generateKeyPair(String algorithm, int keySize)
      生成用于非对称加密的公钥和私钥 密钥对生成算法见:...
      Parameters:
      algorithm - 非对称加密算法
      keySize - 密钥模(modulus )长度
      Returns:
      KeyPair
    • generateKeyPair

      public static KeyPair generateKeyPair(String algorithm, int keySize, byte[] seed)
      生成用于非对称加密的公钥和私钥 密钥对生成算法见:...
      Parameters:
      algorithm - 非对称加密算法
      keySize - 密钥模(modulus )长度
      seed - 种子
      Returns:
      KeyPair
    • generateKeyPair

      public static KeyPair generateKeyPair(String algorithm, AlgorithmParameterSpec params)
      生成用于非对称加密的公钥和私钥 密钥对生成算法见:...
      Parameters:
      algorithm - 非对称加密算法
      params - AlgorithmParameterSpec
      Returns:
      KeyPair
    • generateKeyPair

      public static KeyPair generateKeyPair(String algorithm, byte[] seed, AlgorithmParameterSpec param)
      生成用于非对称加密的公钥和私钥 密钥对生成算法见:...
      Parameters:
      algorithm - 非对称加密算法
      seed - 种子
      param - AlgorithmParameterSpec
      Returns:
      KeyPair
    • generateKeyPair

      public static KeyPair generateKeyPair(String algorithm, int keySize, byte[] seed, AlgorithmParameterSpec... params)
      生成用于非对称加密的公钥和私钥 密钥对生成算法见:...

      对于非对称加密算法,密钥长度有严格限制,具体如下:

      RSA:

       RS256、PS256:2048 bits
       RS384、PS384:3072 bits
       RS512、RS512:4096 bits
       

      EC(Elliptic Curve):

       EC256:256 bits
       EC384:384 bits
       EC512:512 bits
       
      Parameters:
      algorithm - 非对称加密算法
      keySize - 密钥模(modulus )长度(单位bit)
      seed - 种子
      params - AlgorithmParameterSpec
      Returns:
      KeyPair
    • generateKeyPair

      public static KeyPair generateKeyPair(String algorithm, int keySize, SecureRandom random, AlgorithmParameterSpec... params)
      生成用于非对称加密的公钥和私钥 密钥对生成算法见:...

      对于非对称加密算法,密钥长度有严格限制,具体如下:

      RSA:

       RS256、PS256:2048 bits
       RS384、PS384:3072 bits
       RS512、RS512:4096 bits
       

      EC(Elliptic Curve):

       EC256:256 bits
       EC384:384 bits
       EC512:512 bits
       
      Parameters:
      algorithm - 非对称加密算法
      keySize - 密钥模(modulus )长度(单位bit)
      random - SecureRandom 对象,创建时可选传入seed
      params - AlgorithmParameterSpec
      Returns:
      KeyPair
    • getKeyPair

      public static KeyPair getKeyPair(String type, InputStream in, char[] password, String alias)
      从KeyStore中获取私钥公钥
      Parameters:
      type - 类型
      in - InputStream 如果想从文件读取.keystore文件,使用 FileKit.getInputStream(java.io.File) 读取
      password - 密码
      alias - 别名
      Returns:
      KeyPair
    • getKeyPair

      public static KeyPair getKeyPair(KeyStore keyStore, char[] password, String alias)
      从KeyStore中获取私钥公钥
      Parameters:
      keyStore - KeyStore
      password - 密码
      alias - 别名
      Returns:
      KeyPair
    • getKeyPairGenerator

      public static KeyPairGenerator getKeyPairGenerator(String algorithm)
      Parameters:
      algorithm - 非对称加密算法
      Returns:
      KeyPairGenerator
    • getKeyFactory

      public static KeyFactory getKeyFactory(String algorithm)
      Parameters:
      algorithm - 非对称加密算法
      Returns:
      KeyFactory
    • getSecretKeyFactory

      public static SecretKeyFactory getSecretKeyFactory(String algorithm)
      Parameters:
      algorithm - 对称加密算法
      Returns:
      KeyFactory
    • getKeyGenerator

      public static KeyGenerator getKeyGenerator(String algorithm)
      Parameters:
      algorithm - 对称加密算法
      Returns:
      KeyGenerator
    • getMainAlgorithm

      public static String getMainAlgorithm(String algorithm)
      获取主体算法名,例如RSA/ECB/PKCS1Padding的主体算法是RSA
      Parameters:
      algorithm - XXXwithXXX算法
      Returns:
      主体算法名
    • getAlgorithmAfterWith

      public static String getAlgorithmAfterWith(String algorithm)
      获取用于密钥生成的算法 获取XXXwithXXX算法的后半部分算法,如果为ECDSA或SM2,返回算法为EC
      Parameters:
      algorithm - XXXwithXXX算法
      Returns:
      算法
    • readPublicKeyFromCert

      public static PublicKey readPublicKeyFromCert(InputStream in)
      读取X.509 Certification文件中的公钥 Certification为证书文件 see: ...
      Parameters:
      in - InputStream 如果想从文件读取.cer文件,使用 FileKit.getInputStream(File) 读取
      Returns:
      KeyStore
    • encodeECPublicKey

      public static byte[] encodeECPublicKey(PublicKey publicKey)
      编码压缩EC公钥(基于BouncyCastle) 见:...
      Parameters:
      publicKey - PublicKey,必须为org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey
      Returns:
      压缩得到的X
    • toBase64

      public static String toBase64(Key key)
      将密钥编码为Base64格式
      Parameters:
      key - 密钥
      Returns:
      Base64格式密钥
    • readJKSKeyStore

      public static KeyStore readJKSKeyStore(File keyFile, char[] password)
      读取密钥库(Java Key Store,JKS) KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: ...
      Parameters:
      keyFile - 证书文件
      password - 密码
      Returns:
      KeyStore
    • readJKSKeyStore

      public static KeyStore readJKSKeyStore(InputStream in, char[] password)
      读取密钥库(Java Key Store,JKS) KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: ...
      Parameters:
      in - InputStream 如果想从文件读取.keystore文件,使用 FileKit.getInputStream(File) 读取
      password - 密码
      Returns:
      KeyStore
    • readPKCS12KeyStore

      public static KeyStore readPKCS12KeyStore(File keyFile, char[] password)
      读取PKCS12 KeyStore文件 KeyStore文件用于数字证书的密钥对保存
      Parameters:
      keyFile - 证书文件
      password - 密码
      Returns:
      KeyStore
    • readPKCS12KeyStore

      public static KeyStore readPKCS12KeyStore(InputStream in, char[] password)
      读取PKCS12 KeyStore文件 KeyStore文件用于数字证书的密钥对保存
      Parameters:
      in - InputStream 如果想从文件读取.keystore文件,使用 FileKit.getInputStream(File) 读取
      password - 密码
      Returns:
      KeyStore
    • readKeyStore

      public static KeyStore readKeyStore(String type, File keyFile, char[] password)
      读取KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: ...
      Parameters:
      type - 类型
      keyFile - 证书文件
      password - 密码,null表示无密码
      Returns:
      KeyStore
    • readKeyStore

      public static KeyStore readKeyStore(String type, InputStream in, char[] password)
      读取KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: ...
      Parameters:
      type - 类型
      in - InputStream 如果想从文件读取.keystore文件,使用 FileKit.getInputStream(File) 读取
      password - 密码,null表示无密码
      Returns:
      KeyStore
    • getKeyStore

      public static KeyStore getKeyStore(String type)
      获取KeyStore对象
      Parameters:
      type - 类型
      Returns:
      KeyStore
    • readPemPrivateKey

      public static PrivateKey readPemPrivateKey(InputStream pemStream)
      读取PEM格式的私钥
      Parameters:
      pemStream - pem流
      Returns:
      PrivateKey
    • readPemPublicKey

      public static PublicKey readPemPublicKey(InputStream pemStream)
      读取PEM格式的公钥
      Parameters:
      pemStream - pem流
      Returns:
      PublicKey
    • readPemKey

      public static Key readPemKey(InputStream keyStream)
      从pem文件中读取公钥或私钥 根据类型返回 PublicKey 或者 PrivateKey
      Parameters:
      keyStream - pem流
      Returns:
      Key,null表示无法识别的密钥类型
    • readPem

      public static byte[] readPem(InputStream keyStream)
      从pem流中读取公钥或私钥
      Parameters:
      keyStream - pem流
      Returns:
      密钥bytes
    • readPemObject

      public static org.bouncycastle.util.io.pem.PemObject readPemObject(InputStream keyStream)
      读取pem文件中的信息,包括类型、头信息和密钥内容
      Parameters:
      keyStream - pem流
      Returns:
      PemObject
    • readPemObject

      public static org.bouncycastle.util.io.pem.PemObject readPemObject(Reader reader)
      读取pem文件中的信息,包括类型、头信息和密钥内容
      Parameters:
      reader - pem Reader
      Returns:
      PemObject
    • toPem

      public static String toPem(String type, byte[] content)
      将私钥或公钥转换为PEM格式的字符串
      Parameters:
      type - 密钥类型(私钥、公钥、证书)
      content - 密钥内容
      Returns:
      PEM内容
    • writePemObject

      public static void writePemObject(String type, byte[] content, OutputStream keyStream)
      写出pem密钥(私钥、公钥、证书)
      Parameters:
      type - 密钥类型(私钥、公钥、证书)
      content - 密钥内容,需为PKCS#1格式
      keyStream - pem流
    • writePemObject

      public static void writePemObject(String type, byte[] content, Writer writer)
      写出pem密钥(私钥、公钥、证书)
      Parameters:
      type - 密钥类型(私钥、公钥、证书)
      content - 密钥内容,需为PKCS#1格式
      writer - pemWriter
    • writePemObject

      public static void writePemObject(org.bouncycastle.util.io.pem.PemObjectGenerator pemObject, OutputStream keyStream)
      写出pem密钥(私钥、公钥、证书)
      Parameters:
      pemObject - pem对象,包括密钥和密钥类型等信息
      keyStream - pem流
    • writePemObject

      public static void writePemObject(org.bouncycastle.util.io.pem.PemObjectGenerator pemObject, Writer writer)
      写出pem密钥(私钥、公钥、证书)
      Parameters:
      pemObject - pem对象,包括密钥和密钥类型等信息
      writer - pemWriter
    • encodeECPrivateKey

      public static byte[] encodeECPrivateKey(PrivateKey privateKey)
      只获取私钥里的d,32位字节
      Parameters:
      privateKey - PublicKey,必须为org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey
      Returns:
      压缩得到的X
    • encodeECPublicKey

      public static byte[] encodeECPublicKey(PublicKey publicKey, boolean isCompressed)
      编码压缩EC公钥(基于BouncyCastle),即Q值 见:https://www.cnblogs.com/xinzhao/p/8963724.html
      Parameters:
      publicKey - PublicKey,必须为org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey
      isCompressed - 是否压缩
      Returns:
      得到的Q
    • decodeECPoint

      public static PublicKey decodeECPoint(String encode, String curveName)
      解码恢复EC压缩公钥,支持Base64和Hex编码,(基于BouncyCastle) 见:https://www.cnblogs.com/xinzhao/p/8963724.html
      Parameters:
      encode - 压缩公钥
      curveName - EC曲线名
      Returns:
      公钥
    • decodeECPoint

      public static PublicKey decodeECPoint(byte[] encodeByte, String curveName)
      解码恢复EC压缩公钥,支持Base64和Hex编码,(基于BouncyCastle)
      Parameters:
      encodeByte - 压缩公钥
      curveName - EC曲线名,例如Builder.SM2_DOMAIN_PARAMS
      Returns:
      公钥
    • toParams

      public static org.bouncycastle.crypto.params.AsymmetricKeyParameter toParams(Key key)
      密钥转换为AsymmetricKeyParameter
      Parameters:
      key - PrivateKey或者PublicKey
      Returns:
      ECPrivateKeyParameters或者ECPublicKeyParameters
    • getPublicParams

      public static org.bouncycastle.crypto.params.ECPublicKeyParameters getPublicParams(org.bouncycastle.crypto.params.ECPrivateKeyParameters privateKeyParameters)
      根据私钥参数获取公钥参数
      Parameters:
      privateKeyParameters - 私钥参数
      Returns:
      公钥参数
    • toSm2PublicParams

      public static org.bouncycastle.crypto.params.ECPublicKeyParameters toSm2PublicParams(byte[] q)
      转换为 ECPublicKeyParameters
      Parameters:
      q - 公钥Q值
      Returns:
      ECPublicKeyParameters
    • toSm2PublicParams

      public static org.bouncycastle.crypto.params.ECPublicKeyParameters toSm2PublicParams(String q)
      转换为 ECPublicKeyParameters
      Parameters:
      q - 公钥Q值
      Returns:
      ECPublicKeyParameters
    • toSm2PublicParams

      public static org.bouncycastle.crypto.params.ECPublicKeyParameters toSm2PublicParams(String x, String y)
      转换为SM2的ECPublicKeyParameters
      Parameters:
      x - 公钥X
      y - 公钥Y
      Returns:
      ECPublicKeyParameters
    • toSm2PublicParams

      public static org.bouncycastle.crypto.params.ECPublicKeyParameters toSm2PublicParams(byte[] xBytes, byte[] yBytes)
      转换为SM2的ECPublicKeyParameters
      Parameters:
      xBytes - 公钥X
      yBytes - 公钥Y
      Returns:
      ECPublicKeyParameters
    • toPublicParams

      public static org.bouncycastle.crypto.params.ECPublicKeyParameters toPublicParams(String x, String y, org.bouncycastle.crypto.params.ECDomainParameters domainParameters)
      转换为ECPublicKeyParameters
      Parameters:
      x - 公钥X
      y - 公钥Y
      domainParameters - ECDomainParameters
      Returns:
      ECPublicKeyParameters,x或y为null则返回null
    • toPublicParams

      public static org.bouncycastle.crypto.params.ECPublicKeyParameters toPublicParams(byte[] xBytes, byte[] yBytes, org.bouncycastle.crypto.params.ECDomainParameters domainParameters)
      转换为ECPublicKeyParameters
      Parameters:
      xBytes - 公钥X
      yBytes - 公钥Y
      domainParameters - ECDomainParameters曲线参数
      Returns:
      ECPublicKeyParameters
    • toPublicParams

      public static org.bouncycastle.crypto.params.ECPublicKeyParameters toPublicParams(BigInteger x, BigInteger y, org.bouncycastle.crypto.params.ECDomainParameters domainParameters)
      转换为ECPublicKeyParameters
      Parameters:
      x - 公钥X
      y - 公钥Y
      domainParameters - ECDomainParameters
      Returns:
      ECPublicKeyParameters
    • toPublicParams

      public static org.bouncycastle.crypto.params.ECPublicKeyParameters toPublicParams(String pointEncoded, org.bouncycastle.crypto.params.ECDomainParameters domainParameters)
      转换为ECPublicKeyParameters
      Parameters:
      pointEncoded - 被编码的曲线坐标点
      domainParameters - ECDomainParameters
      Returns:
      ECPublicKeyParameters
    • toPublicParams

      public static org.bouncycastle.crypto.params.ECPublicKeyParameters toPublicParams(byte[] pointEncoded, org.bouncycastle.crypto.params.ECDomainParameters domainParameters)
      转换为ECPublicKeyParameters
      Parameters:
      pointEncoded - 被编码的曲线坐标点
      domainParameters - ECDomainParameters
      Returns:
      ECPublicKeyParameters
    • toPublicParams

      public static org.bouncycastle.crypto.params.ECPublicKeyParameters toPublicParams(org.bouncycastle.math.ec.ECPoint point, org.bouncycastle.crypto.params.ECDomainParameters domainParameters)
      转换为ECPublicKeyParameters
      Parameters:
      point - 曲线坐标点
      domainParameters - ECDomainParameters
      Returns:
      ECPublicKeyParameters
    • toPublicParams

      public static org.bouncycastle.crypto.params.ECPublicKeyParameters toPublicParams(PublicKey publicKey)
      公钥转换为 ECPublicKeyParameters
      Parameters:
      publicKey - 公钥,传入null返回null
      Returns:
      ECPublicKeyParameters或null
    • toSm2PrivateParams

      public static org.bouncycastle.crypto.params.ECPrivateKeyParameters toSm2PrivateParams(String d)
      转换为 ECPrivateKeyParameters
      Parameters:
      d - 私钥d值16进制字符串
      Returns:
      ECPrivateKeyParameters
    • toSm2PrivateParams

      public static org.bouncycastle.crypto.params.ECPrivateKeyParameters toSm2PrivateParams(byte[] d)
      转换为 ECPrivateKeyParameters
      Parameters:
      d - 私钥d值
      Returns:
      ECPrivateKeyParameters
    • toSm2PrivateParams

      public static org.bouncycastle.crypto.params.ECPrivateKeyParameters toSm2PrivateParams(BigInteger d)
      转换为 ECPrivateKeyParameters
      Parameters:
      d - 私钥d值
      Returns:
      ECPrivateKeyParameters
    • toPrivateParams

      public static org.bouncycastle.crypto.params.ECPrivateKeyParameters toPrivateParams(String d, org.bouncycastle.crypto.params.ECDomainParameters domainParameters)
      转换为 ECPrivateKeyParameters
      Parameters:
      d - 私钥d值16进制字符串
      domainParameters - ECDomainParameters
      Returns:
      ECPrivateKeyParameters
    • toPrivateParams

      public static org.bouncycastle.crypto.params.ECPrivateKeyParameters toPrivateParams(byte[] d, org.bouncycastle.crypto.params.ECDomainParameters domainParameters)
      转换为 ECPrivateKeyParameters
      Parameters:
      d - 私钥d值
      domainParameters - ECDomainParameters
      Returns:
      ECPrivateKeyParameters
    • toPrivateParams

      public static org.bouncycastle.crypto.params.ECPrivateKeyParameters toPrivateParams(BigInteger d, org.bouncycastle.crypto.params.ECDomainParameters domainParameters)
      转换为 ECPrivateKeyParameters
      Parameters:
      d - 私钥d值
      domainParameters - ECDomainParameters
      Returns:
      ECPrivateKeyParameters
    • toPrivateParams

      public static org.bouncycastle.crypto.params.ECPrivateKeyParameters toPrivateParams(PrivateKey privateKey)
      私钥转换为 ECPrivateKeyParameters
      Parameters:
      privateKey - 私钥,传入null返回null
      Returns:
      ECPrivateKeyParameters或null
    • toSm2PrivateKey

      public static PrivateKey toSm2PrivateKey(org.bouncycastle.asn1.sec.ECPrivateKey privateKey)
      将SM2算法的ECPrivateKey 转换为 PrivateKey
      Parameters:
      privateKey - ECPrivateKey
      Returns:
      PrivateKey
    • createOpenSSHPrivateKeySpec

      public static KeySpec createOpenSSHPrivateKeySpec(byte[] key)
      创建OpenSSHPrivateKeySpec
      Parameters:
      key - 私钥,需为PKCS#1格式
      Returns:
      OpenSSHPrivateKeySpec
    • createOpenSSHPublicKeySpec

      public static KeySpec createOpenSSHPublicKeySpec(byte[] key)
      创建OpenSSHPublicKeySpec
      Parameters:
      key - 公钥,需为PKCS#1格式
      Returns:
      OpenSSHPublicKeySpec
    • decodePrivateKeyParams

      public static org.bouncycastle.crypto.params.ECPrivateKeyParameters decodePrivateKeyParams(byte[] privateKeyBytes)
      尝试解析转换各种类型私钥为ECPrivateKeyParameters,支持包括:
      • D值
      • PKCS#8
      • PKCS#1
      Parameters:
      privateKeyBytes - 私钥
      Returns:
      ECPrivateKeyParameters
    • decodePublicKeyParams

      public static org.bouncycastle.crypto.params.ECPublicKeyParameters decodePublicKeyParams(byte[] publicKeyBytes)
      尝试解析转换各种类型公钥为ECPublicKeyParameters,支持包括:
      • Q值
      • X.509
      • PKCS#1
      Parameters:
      publicKeyBytes - 公钥
      Returns:
      ECPublicKeyParameters
    • readX509Certificate

      public static Certificate readX509Certificate(InputStream in)
      读取X.509 Certification文件 Certification为证书文件 see: ...
      Parameters:
      in - InputStream 如果想从文件读取.cer文件,使用 FileKit.getInputStream(File) 读取
      Returns:
      KeyStore
    • readX509Certificate

      public static Certificate readX509Certificate(InputStream in, char[] password, String alias)
      读取X.509 Certification文件 Certification为证书文件 see: ...
      Parameters:
      in - InputStream 如果想从文件读取.cer文件,使用 FileKit.getInputStream(File) 读取
      password - 密码
      alias - 别名
      Returns:
      KeyStore
    • readCertificate

      public static Certificate readCertificate(String type, InputStream in, char[] password, String alias)
      读取Certification文件 Certification为证书文件 see: ...
      Parameters:
      type - 类型,例如X.509
      in - InputStream 如果想从文件读取.cer文件,使用 FileKit.getInputStream(File) 读取
      password - 密码
      alias - 别名
      Returns:
      KeyStore
    • readCertificate

      public static Certificate readCertificate(String type, InputStream in)
      读取Certification文件 Certification为证书文件 see: ...
      Parameters:
      type - 类型,例如X.509
      in - InputStream 如果想从文件读取.cer文件,使用 FileKit.getInputStream(File) 读取
      Returns:
      Certificate
    • getCertificate

      public static Certificate getCertificate(KeyStore keyStore, String alias)
      获得 Certification
      Parameters:
      keyStore - KeyStore
      alias - 别名
      Returns:
      Certificate
    • getCertificateFactory

      public static CertificateFactory getCertificateFactory(String type)
      Parameters:
      type - 类型,例如X.509
      Returns:
      KeyPairGenerator