Package org.miaixz.bus.crypto
Class Keeper
java.lang.Object
org.miaixz.bus.crypto.Keeper
密钥工具
1、生成密钥(单密钥、密钥对) 2、读取密钥文件
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic KeySpeccreateOpenSSHPrivateKeySpec(byte[] key) 创建OpenSSHPrivateKeySpecstatic KeySpeccreateOpenSSHPublicKeySpec(byte[] key) 创建OpenSSHPublicKeySpecstatic PublicKeydecodeECPoint(byte[] encodeByte, String curveName) 解码恢复EC压缩公钥,支持Base64和Hex编码,(基于BouncyCastle)static PublicKeydecodeECPoint(String encode, String curveName) 解码恢复EC压缩公钥,支持Base64和Hex编码,(基于BouncyCastle) 见:https://www.cnblogs.com/xinzhao/p/8963724.htmlstatic org.bouncycastle.crypto.params.ECPrivateKeyParametersdecodePrivateKeyParams(byte[] privateKeyBytes) 尝试解析转换各种类型私钥为ECPrivateKeyParameters,支持包括: D值 PKCS#8 PKCS#1static org.bouncycastle.crypto.params.ECPublicKeyParametersdecodePublicKeyParams(byte[] publicKeyBytes) 尝试解析转换各种类型公钥为ECPublicKeyParameters,支持包括: Q值 X.509 PKCS#1static byte[]encodeECPrivateKey(PrivateKey privateKey) 只获取私钥里的d,32位字节static byte[]encodeECPublicKey(PublicKey publicKey) 编码压缩EC公钥(基于BouncyCastle) 见:...static byte[]encodeECPublicKey(PublicKey publicKey, boolean isCompressed) 编码压缩EC公钥(基于BouncyCastle),即Q值 见:https://www.cnblogs.com/xinzhao/p/8963724.htmlstatic SecretKeygenerateDESKey(String algorithm, byte[] key) 生成SecretKeystatic SecretKeygenerateKey(String algorithm) 生成SecretKey,仅用于对称加密和摘要算法密钥生成static SecretKeygenerateKey(String algorithm, byte[] key) 生成SecretKey,仅用于对称加密和摘要算法密钥生成static SecretKeygenerateKey(String algorithm, int keySize) 生成SecretKey,仅用于对称加密和摘要算法密钥生成 当指定keySize<0时,AES默认长度为128,其它算法不指定。static SecretKeygenerateKey(String algorithm, int keySize, SecureRandom random) 生成SecretKey,仅用于对称加密和摘要算法密钥生成 当指定keySize<0时,AES默认长度为128,其它算法不指定。static SecretKeygenerateKey(String algorithm, KeySpec keySpec) 生成SecretKey,仅用于对称加密和摘要算法static KeyPairgenerateKeyPair(String algorithm) 生成用于非对称加密的公钥和私钥,仅用于非对称加密 密钥对生成算法见:...static KeyPairgenerateKeyPair(String algorithm, byte[] seed, AlgorithmParameterSpec param) 生成用于非对称加密的公钥和私钥 密钥对生成算法见:...static KeyPairgenerateKeyPair(String algorithm, int keySize) 生成用于非对称加密的公钥和私钥 密钥对生成算法见:...static KeyPairgenerateKeyPair(String algorithm, int keySize, byte[] seed) 生成用于非对称加密的公钥和私钥 密钥对生成算法见:...static KeyPairgenerateKeyPair(String algorithm, int keySize, byte[] seed, AlgorithmParameterSpec... params) 生成用于非对称加密的公钥和私钥 密钥对生成算法见:...static KeyPairgenerateKeyPair(String algorithm, int keySize, SecureRandom random, AlgorithmParameterSpec... params) 生成用于非对称加密的公钥和私钥 密钥对生成算法见:...static KeyPairgenerateKeyPair(String algorithm, AlgorithmParameterSpec params) 生成用于非对称加密的公钥和私钥 密钥对生成算法见:...static SecretKeygeneratePBEKey(String algorithm, char[] password) 生成PBESecretKeystatic PrivateKeygeneratePrivateKey(String algorithm, byte[] key) 生成私钥,仅用于非对称加密 采用PKCS#8规范,此规范定义了私钥信息语法和加密私钥语法 算法见:...static PrivateKeygeneratePrivateKey(String algorithm, KeySpec keySpec) 生成私钥,仅用于非对称加密 算法见:...static PrivateKeygeneratePrivateKey(KeyStore keyStore, String alias, char[] password) 生成私钥,仅用于非对称加密static PublicKeygeneratePublicKey(String algorithm, byte[] key) 生成公钥,仅用于非对称加密 采用X509证书规范 算法见:...static PublicKeygeneratePublicKey(String algorithm, KeySpec keySpec) 生成公钥,仅用于非对称加密 算法见:...static PrivateKeygenerateRSAPrivateKey(byte[] key) 生成RSA私钥,仅用于非对称加密 采用PKCS#8规范,此规范定义了私钥信息语法和加密私钥语法 算法见:...static PublicKeygenerateRSAPublicKey(byte[] key) 生成RSA公钥,仅用于非对称加密 采用X509证书规范 算法见:...static StringgetAlgorithmAfterWith(String algorithm) 获取用于密钥生成的算法 获取XXXwithXXX算法的后半部分算法,如果为ECDSA或SM2,返回算法为ECstatic CertificategetCertificate(KeyStore keyStore, String alias) 获得 Certificationstatic CertificateFactorygetCertificateFactory(String type) static KeyFactorygetKeyFactory(String algorithm) static KeyGeneratorgetKeyGenerator(String algorithm) static KeyPairgetKeyPair(String type, InputStream in, char[] password, String alias) 从KeyStore中获取私钥公钥static KeyPairgetKeyPair(KeyStore keyStore, char[] password, String alias) 从KeyStore中获取私钥公钥static KeyPairGeneratorgetKeyPairGenerator(String algorithm) static KeyStoregetKeyStore(String type) 获取KeyStore对象static StringgetMainAlgorithm(String algorithm) 获取主体算法名,例如RSA/ECB/PKCS1Padding的主体算法是RSAstatic org.bouncycastle.crypto.params.ECPublicKeyParametersgetPublicParams(org.bouncycastle.crypto.params.ECPrivateKeyParameters privateKeyParameters) 根据私钥参数获取公钥参数static PublicKeygetRSAPublicKey(String modulus, String publicExponent) 获得RSA公钥对象static PublicKeygetRSAPublicKey(BigInteger modulus, BigInteger publicExponent) 获得RSA公钥对象static PublicKeygetRSAPublicKey(PrivateKey privateKey) 通过RSA私钥生成RSA公钥static SecretKeyFactorygetSecretKeyFactory(String algorithm) static booleanstatic CertificatereadCertificate(String type, InputStream in) 读取Certification文件 Certification为证书文件 see: ...static CertificatereadCertificate(String type, InputStream in, char[] password, String alias) 读取Certification文件 Certification为证书文件 see: ...static KeyStorereadJKSKeyStore(File keyFile, char[] password) 读取密钥库(Java Key Store,JKS) KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: ...static KeyStorereadJKSKeyStore(InputStream in, char[] password) 读取密钥库(Java Key Store,JKS) KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: ...static KeyStorereadKeyStore(String type, File keyFile, char[] password) 读取KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: ...static KeyStorereadKeyStore(String type, InputStream in, char[] password) 读取KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: ...static byte[]readPem(InputStream keyStream) 从pem流中读取公钥或私钥static KeyreadPemKey(InputStream keyStream) 从pem文件中读取公钥或私钥 根据类型返回PublicKey或者PrivateKeystatic org.bouncycastle.util.io.pem.PemObjectreadPemObject(InputStream keyStream) 读取pem文件中的信息,包括类型、头信息和密钥内容static org.bouncycastle.util.io.pem.PemObjectreadPemObject(Reader reader) 读取pem文件中的信息,包括类型、头信息和密钥内容static PrivateKeyreadPemPrivateKey(InputStream pemStream) 读取PEM格式的私钥static PublicKeyreadPemPublicKey(InputStream pemStream) 读取PEM格式的公钥static KeyStorereadPKCS12KeyStore(File keyFile, char[] password) 读取PKCS12 KeyStore文件 KeyStore文件用于数字证书的密钥对保存static KeyStorereadPKCS12KeyStore(InputStream in, char[] password) 读取PKCS12 KeyStore文件 KeyStore文件用于数字证书的密钥对保存static PublicKey读取X.509 Certification文件中的公钥 Certification为证书文件 see: ...static Certificate读取X.509 Certification文件 Certification为证书文件 see: ...static CertificatereadX509Certificate(InputStream in, char[] password, String alias) 读取X.509 Certification文件 Certification为证书文件 see: ...static String将密钥编码为Base64格式static org.bouncycastle.crypto.params.AsymmetricKeyParameter密钥转换为AsymmetricKeyParameterstatic String将私钥或公钥转换为PEM格式的字符串static org.bouncycastle.crypto.params.ECPrivateKeyParameterstoPrivateParams(byte[] d, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为 ECPrivateKeyParametersstatic org.bouncycastle.crypto.params.ECPrivateKeyParameterstoPrivateParams(String d, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为 ECPrivateKeyParametersstatic org.bouncycastle.crypto.params.ECPrivateKeyParameterstoPrivateParams(BigInteger d, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为 ECPrivateKeyParametersstatic org.bouncycastle.crypto.params.ECPrivateKeyParameterstoPrivateParams(PrivateKey privateKey) 私钥转换为ECPrivateKeyParametersstatic org.bouncycastle.crypto.params.ECPublicKeyParameterstoPublicParams(byte[] xBytes, byte[] yBytes, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为ECPublicKeyParametersstatic org.bouncycastle.crypto.params.ECPublicKeyParameterstoPublicParams(byte[] pointEncoded, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为ECPublicKeyParametersstatic org.bouncycastle.crypto.params.ECPublicKeyParameterstoPublicParams(String x, String y, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为ECPublicKeyParametersstatic org.bouncycastle.crypto.params.ECPublicKeyParameterstoPublicParams(String pointEncoded, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为ECPublicKeyParametersstatic org.bouncycastle.crypto.params.ECPublicKeyParameterstoPublicParams(BigInteger x, BigInteger y, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为ECPublicKeyParametersstatic org.bouncycastle.crypto.params.ECPublicKeyParameterstoPublicParams(PublicKey publicKey) 公钥转换为ECPublicKeyParametersstatic org.bouncycastle.crypto.params.ECPublicKeyParameterstoPublicParams(org.bouncycastle.math.ec.ECPoint point, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为ECPublicKeyParametersstatic PrivateKeytoSm2PrivateKey(org.bouncycastle.asn1.sec.ECPrivateKey privateKey) 将SM2算法的ECPrivateKey转换为PrivateKeystatic org.bouncycastle.crypto.params.ECPrivateKeyParameterstoSm2PrivateParams(byte[] d) 转换为 ECPrivateKeyParametersstatic org.bouncycastle.crypto.params.ECPrivateKeyParameters转换为 ECPrivateKeyParametersstatic org.bouncycastle.crypto.params.ECPrivateKeyParameters转换为 ECPrivateKeyParametersstatic org.bouncycastle.crypto.params.ECPublicKeyParameterstoSm2PublicParams(byte[] q) 转换为 ECPublicKeyParametersstatic org.bouncycastle.crypto.params.ECPublicKeyParameterstoSm2PublicParams(byte[] xBytes, byte[] yBytes) 转换为SM2的ECPublicKeyParametersstatic org.bouncycastle.crypto.params.ECPublicKeyParameters转换为 ECPublicKeyParametersstatic org.bouncycastle.crypto.params.ECPublicKeyParameterstoSm2PublicParams(String x, String y) 转换为SM2的ECPublicKeyParametersstatic voidwritePemObject(String type, byte[] content, OutputStream keyStream) 写出pem密钥(私钥、公钥、证书)static voidwritePemObject(String type, byte[] content, Writer writer) 写出pem密钥(私钥、公钥、证书)static voidwritePemObject(org.bouncycastle.util.io.pem.PemObjectGenerator pemObject, OutputStream keyStream) 写出pem密钥(私钥、公钥、证书)static voidwritePemObject(org.bouncycastle.util.io.pem.PemObjectGenerator pemObject, Writer writer) 写出pem密钥(私钥、公钥、证书)
-
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
Java密钥库(Java Key Store,JKS)KEY_STORE- See Also:
-
TYPE_JCEKS
jceks- See Also:
-
TYPE_PKCS12
PKCS12是公钥加密标准,它规定了可包含所有私钥、公钥和证书。其以二进制格式存储,也称为 PFX 文件- See Also:
-
TYPE_X509
Certification类型:X.509- See Also:
-
-
Constructor Details
-
Keeper
public Keeper()
-
-
Method Details
-
generateKey
生成SecretKey,仅用于对称加密和摘要算法密钥生成- Parameters:
algorithm- 算法,支持PBE算法- Returns:
SecretKey
-
generateKey
生成SecretKey,仅用于对称加密和摘要算法密钥生成 当指定keySize<0时,AES默认长度为128,其它算法不指定。- Parameters:
algorithm- 算法,支持PBE算法keySize- 密钥长度,<0表示不设定密钥长度,即使用默认长度- Returns:
SecretKey
-
generateKey
生成SecretKey,仅用于对称加密和摘要算法密钥生成 当指定keySize<0时,AES默认长度为128,其它算法不指定。- Parameters:
algorithm- 算法,支持PBE算法keySize- 密钥长度,<0表示不设定密钥长度,即使用默认长度random- 随机数生成器,null表示默认- Returns:
SecretKey
-
generateKey
生成SecretKey,仅用于对称加密和摘要算法密钥生成- Parameters:
algorithm- 算法key- 密钥,如果为null自动生成随机密钥- Returns:
SecretKey
-
generateDESKey
生成SecretKey- Parameters:
algorithm- DES算法,包括DES、DESede等key- 密钥- Returns:
SecretKey
-
generatePBEKey
生成PBESecretKey- Parameters:
algorithm- PBE算法,包括:PBEWithMD5AndDES、PBEWithSHA1AndDESede、PBEWithSHA1AndRC2_40等password- 口令- Returns:
SecretKey
-
generateKey
生成SecretKey,仅用于对称加密和摘要算法 -
isEmpty
检查KeyPair是否为空,空的条件是:- keyPair本身为
null KeyPair.getPrivate()和KeyPair.getPublic()都为null
- Parameters:
keyPair- 密钥对- Returns:
- 是否为空
- keyPair本身为
-
generateRSAPrivateKey
生成RSA私钥,仅用于非对称加密 采用PKCS#8规范,此规范定义了私钥信息语法和加密私钥语法 算法见:...- Parameters:
key- 密钥,必须为DER编码存储- Returns:
- RSA私钥
PrivateKey
-
generatePrivateKey
生成私钥,仅用于非对称加密 采用PKCS#8规范,此规范定义了私钥信息语法和加密私钥语法 算法见:...- Parameters:
algorithm- 算法,如RSA、EC、SM2等key- 密钥,PKCS#8格式- Returns:
- 私钥
PrivateKey
-
generatePrivateKey
生成私钥,仅用于非对称加密 算法见:...- Parameters:
algorithm- 算法,如RSA、EC、SM2等keySpec-KeySpec- Returns:
- 私钥
PrivateKey
-
generatePrivateKey
生成私钥,仅用于非对称加密- Parameters:
keyStore-KeyStorealias- 别名password- 密码- Returns:
- 私钥
PrivateKey
-
generateRSAPublicKey
生成RSA公钥,仅用于非对称加密 采用X509证书规范 算法见:...- Parameters:
key- 密钥,必须为DER编码存储- Returns:
- 公钥
PublicKey
-
generatePublicKey
生成公钥,仅用于非对称加密 采用X509证书规范 算法见:...- Parameters:
algorithm- 算法key- 密钥,必须为DER编码存储- Returns:
- 公钥
PublicKey
-
generatePublicKey
生成公钥,仅用于非对称加密 算法见:... -
getRSAPublicKey
通过RSA私钥生成RSA公钥- Parameters:
privateKey- RSA私钥- Returns:
- RSA公钥,null表示私钥不被支持
-
getRSAPublicKey
获得RSA公钥对象- Parameters:
modulus- ModuluspublicExponent- Public Exponent- Returns:
- 公钥
-
getRSAPublicKey
获得RSA公钥对象- Parameters:
modulus- ModuluspublicExponent- Public Exponent- Returns:
- 公钥
-
generateKeyPair
生成用于非对称加密的公钥和私钥,仅用于非对称加密 密钥对生成算法见:...- Parameters:
algorithm- 非对称加密算法- Returns:
KeyPair
-
generateKeyPair
生成用于非对称加密的公钥和私钥 密钥对生成算法见:...- Parameters:
algorithm- 非对称加密算法keySize- 密钥模(modulus )长度- Returns:
KeyPair
-
generateKeyPair
生成用于非对称加密的公钥和私钥 密钥对生成算法见:...- Parameters:
algorithm- 非对称加密算法keySize- 密钥模(modulus )长度seed- 种子- Returns:
KeyPair
-
generateKeyPair
生成用于非对称加密的公钥和私钥 密钥对生成算法见:...- Parameters:
algorithm- 非对称加密算法params-AlgorithmParameterSpec- Returns:
KeyPair
-
generateKeyPair
生成用于非对称加密的公钥和私钥 密钥对生成算法见:...- 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对象,创建时可选传入seedparams-AlgorithmParameterSpec- Returns:
KeyPair
-
getKeyPair
从KeyStore中获取私钥公钥- Parameters:
type- 类型in-InputStream如果想从文件读取.keystore文件,使用FileKit.getInputStream(java.io.File)读取password- 密码alias- 别名- Returns:
KeyPair
-
getKeyPair
从KeyStore中获取私钥公钥 -
getKeyPairGenerator
- Parameters:
algorithm- 非对称加密算法- Returns:
KeyPairGenerator
-
getKeyFactory
- Parameters:
algorithm- 非对称加密算法- Returns:
KeyFactory
-
getSecretKeyFactory
- Parameters:
algorithm- 对称加密算法- Returns:
KeyFactory
-
getKeyGenerator
- Parameters:
algorithm- 对称加密算法- Returns:
KeyGenerator
-
getMainAlgorithm
获取主体算法名,例如RSA/ECB/PKCS1Padding的主体算法是RSA- Parameters:
algorithm- XXXwithXXX算法- Returns:
- 主体算法名
-
getAlgorithmAfterWith
获取用于密钥生成的算法 获取XXXwithXXX算法的后半部分算法,如果为ECDSA或SM2,返回算法为EC- Parameters:
algorithm- XXXwithXXX算法- Returns:
- 算法
-
readPublicKeyFromCert
读取X.509 Certification文件中的公钥 Certification为证书文件 see: ...- Parameters:
in-InputStream如果想从文件读取.cer文件,使用FileKit.getInputStream(File)读取- Returns:
KeyStore
-
encodeECPublicKey
编码压缩EC公钥(基于BouncyCastle) 见:...- Parameters:
publicKey-PublicKey,必须为org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey- Returns:
- 压缩得到的X
-
toBase64
将密钥编码为Base64格式- Parameters:
key- 密钥- Returns:
- Base64格式密钥
-
readJKSKeyStore
读取密钥库(Java Key Store,JKS) KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: ...- Parameters:
keyFile- 证书文件password- 密码- Returns:
KeyStore
-
readJKSKeyStore
读取密钥库(Java Key Store,JKS) KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: ...- Parameters:
in-InputStream如果想从文件读取.keystore文件,使用FileKit.getInputStream(File)读取password- 密码- Returns:
KeyStore
-
readPKCS12KeyStore
读取PKCS12 KeyStore文件 KeyStore文件用于数字证书的密钥对保存- Parameters:
keyFile- 证书文件password- 密码- Returns:
KeyStore
-
readPKCS12KeyStore
读取PKCS12 KeyStore文件 KeyStore文件用于数字证书的密钥对保存- Parameters:
in-InputStream如果想从文件读取.keystore文件,使用FileKit.getInputStream(File)读取password- 密码- Returns:
KeyStore
-
readKeyStore
读取KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: ...- Parameters:
type- 类型keyFile- 证书文件password- 密码,null表示无密码- Returns:
KeyStore
-
readKeyStore
读取KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: ...- Parameters:
type- 类型in-InputStream如果想从文件读取.keystore文件,使用FileKit.getInputStream(File)读取password- 密码,null表示无密码- Returns:
KeyStore
-
getKeyStore
获取KeyStore对象- Parameters:
type- 类型- Returns:
KeyStore
-
readPemPrivateKey
读取PEM格式的私钥- Parameters:
pemStream- pem流- Returns:
PrivateKey
-
readPemPublicKey
读取PEM格式的公钥- Parameters:
pemStream- pem流- Returns:
PublicKey
-
readPemKey
从pem文件中读取公钥或私钥 根据类型返回PublicKey或者PrivateKey- Parameters:
keyStream- pem流- Returns:
Key,null表示无法识别的密钥类型
-
readPem
从pem流中读取公钥或私钥- Parameters:
keyStream- pem流- Returns:
- 密钥bytes
-
readPemObject
读取pem文件中的信息,包括类型、头信息和密钥内容- Parameters:
keyStream- pem流- Returns:
PemObject
-
readPemObject
读取pem文件中的信息,包括类型、头信息和密钥内容- Parameters:
reader- pem Reader- Returns:
PemObject
-
toPem
将私钥或公钥转换为PEM格式的字符串- Parameters:
type- 密钥类型(私钥、公钥、证书)content- 密钥内容- Returns:
- PEM内容
-
writePemObject
写出pem密钥(私钥、公钥、证书)- Parameters:
type- 密钥类型(私钥、公钥、证书)content- 密钥内容,需为PKCS#1格式keyStream- pem流
-
writePemObject
写出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
只获取私钥里的d,32位字节- Parameters:
privateKey-PublicKey,必须为org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey- Returns:
- 压缩得到的X
-
encodeECPublicKey
编码压缩EC公钥(基于BouncyCastle),即Q值 见:https://www.cnblogs.com/xinzhao/p/8963724.html- Parameters:
publicKey-PublicKey,必须为org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKeyisCompressed- 是否压缩- Returns:
- 得到的Q
-
decodeECPoint
解码恢复EC压缩公钥,支持Base64和Hex编码,(基于BouncyCastle) 见:https://www.cnblogs.com/xinzhao/p/8963724.html- Parameters:
encode- 压缩公钥curveName- EC曲线名- Returns:
- 公钥
-
decodeECPoint
解码恢复EC压缩公钥,支持Base64和Hex编码,(基于BouncyCastle)- Parameters:
encodeByte- 压缩公钥curveName- EC曲线名,例如Builder.SM2_DOMAIN_PARAMS- Returns:
- 公钥
-
toParams
密钥转换为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
转换为 ECPublicKeyParameters- Parameters:
q- 公钥Q值- Returns:
- ECPublicKeyParameters
-
toSm2PublicParams
public static org.bouncycastle.crypto.params.ECPublicKeyParameters toSm2PublicParams(String x, String y) 转换为SM2的ECPublicKeyParameters- Parameters:
x- 公钥Xy- 公钥Y- Returns:
- ECPublicKeyParameters
-
toSm2PublicParams
public static org.bouncycastle.crypto.params.ECPublicKeyParameters toSm2PublicParams(byte[] xBytes, byte[] yBytes) 转换为SM2的ECPublicKeyParameters- Parameters:
xBytes- 公钥XyBytes- 公钥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- 公钥Xy- 公钥YdomainParameters- 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- 公钥XyBytes- 公钥YdomainParameters- 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- 公钥Xy- 公钥YdomainParameters- 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
转换为 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
将SM2算法的ECPrivateKey转换为PrivateKey- Parameters:
privateKey-ECPrivateKey- Returns:
PrivateKey
-
createOpenSSHPrivateKeySpec
创建OpenSSHPrivateKeySpec- Parameters:
key- 私钥,需为PKCS#1格式- Returns:
OpenSSHPrivateKeySpec
-
createOpenSSHPublicKeySpec
创建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
读取X.509 Certification文件 Certification为证书文件 see: ...- Parameters:
in-InputStream如果想从文件读取.cer文件,使用FileKit.getInputStream(File)读取- Returns:
KeyStore
-
readX509Certificate
读取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.509in-InputStream如果想从文件读取.cer文件,使用FileKit.getInputStream(File)读取password- 密码alias- 别名- Returns:
KeyStore
-
readCertificate
读取Certification文件 Certification为证书文件 see: ...- Parameters:
type- 类型,例如X.509in-InputStream如果想从文件读取.cer文件,使用FileKit.getInputStream(File)读取- Returns:
Certificate
-
getCertificate
获得 Certification- Parameters:
keyStore-KeyStorealias- 别名- Returns:
Certificate
-
getCertificateFactory
- Parameters:
type- 类型,例如X.509- Returns:
KeyPairGenerator
-