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 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 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 PrivateKeygenerateSm2PrivateKey(byte[] privateKeyBytes) 生成SM2私钥,支持包括: D值 PKCS#8 PKCS#1 OpenSSH格式static PublicKeygenerateSm2PublicKey(byte[] publicKeyBytes) 生成SM2公钥,支持包括: Q值 X.509 PKCS#1static PublicKeygenerateSm2PublicKey(byte[] x, byte[] y) 尝试解析转换各种类型公钥为ECPublicKeyParameters,支持包括:static StringgetAlgorithmAfterWith(String algorithm) 获取用于密钥生成的算法 获取XXXwithXXX算法的后半部分算法,如果为ECDSA或SM2,返回算法为ECstatic CertificategetCertificate(KeyStore keyStore, String alias) 获得 Certificationstatic CertificateFactorygetCertificateFactory(String type) static PublicKeygetECPublicKey(org.bouncycastle.jce.interfaces.ECPrivateKey privateKey, org.bouncycastle.jce.spec.ECParameterSpec spec) 根据私钥获取EC公钥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.jcajce.spec.OpenSSHPrivateKeySpecgetOpenSSHPrivateKeySpec(byte[] key) 创建OpenSSHPrivateKeySpecstatic org.bouncycastle.jcajce.spec.OpenSSHPublicKeySpecgetOpenSSHPublicKeySpec(byte[] key) 创建OpenSSHPublicKeySpecstatic org.bouncycastle.jce.spec.ECPrivateKeySpecgetPrivateKeySpec(byte[] d, org.bouncycastle.jce.spec.ECParameterSpec parameterSpec) 获取私钥规范static org.bouncycastle.jce.spec.ECPrivateKeySpecgetPrivateKeySpec(BigInteger d, org.bouncycastle.jce.spec.ECParameterSpec parameterSpec) 获取私钥规范static org.bouncycastle.jce.spec.ECPublicKeySpecgetPublicKeySpec(byte[] x, byte[] y, org.bouncycastle.jce.spec.ECParameterSpec parameterSpec) 获取公钥规范static org.bouncycastle.jce.spec.ECPublicKeySpecgetPublicKeySpec(byte[] q, org.bouncycastle.jce.spec.ECParameterSpec parameterSpec) 获取公钥规范static org.bouncycastle.jce.spec.ECPublicKeySpecgetPublicKeySpec(BigInteger x, BigInteger y, org.bouncycastle.jce.spec.ECParameterSpec parameterSpec) 获取公钥规范static org.bouncycastle.jce.spec.ECPublicKeySpecgetPublicKeySpec(org.bouncycastle.math.ec.ECPoint ecPoint, org.bouncycastle.jce.spec.ECParameterSpec parameterSpec) 获取公钥规范static org.bouncycastle.crypto.params.ECPublicKeyParametersgetPublicParams(org.bouncycastle.crypto.params.ECPrivateKeyParameters privateKeyParameters) 根据私钥参数获取公钥参数static org.bouncycastle.math.ec.ECPointgetQFromD(BigInteger d, org.bouncycastle.jce.spec.ECParameterSpec spec) 根据私钥D值获取公钥的点坐标(Q值)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 booleanisSelfSigned(X509Certificate cert) 判断一个证书是否是自签名的,即证书由自己签发。static booleanisSignedBy(X509Certificate end, X509Certificate ca) 验证一个证书是否由另一个证书签发。static 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(File keyFile, char[] password) 读取KeyStore文件, KeyStore文件用于数字证书的密钥对保存 证书类型根据扩展名自动判断,规则如下: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文件用于数字证书的密钥对保存 证书类型根据扩展名自动判断,规则如下:.jks .keystore -> JKS .p12 .pfx等其它 -> PKCS12- Parameters:
keyFile- 证书文件password- 密码,null表示无密码- 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
-
getECPublicKey
public static PublicKey getECPublicKey(org.bouncycastle.jce.interfaces.ECPrivateKey privateKey, org.bouncycastle.jce.spec.ECParameterSpec spec) 根据私钥获取EC公钥- Parameters:
privateKey- EC私钥spec- 密钥规范- Returns:
- EC公钥
-
getQFromD
public static org.bouncycastle.math.ec.ECPoint getQFromD(BigInteger d, org.bouncycastle.jce.spec.ECParameterSpec spec) 根据私钥D值获取公钥的点坐标(Q值)- Parameters:
d- 私钥d值spec- 密钥规范- Returns:
- 公钥的点坐标
-
encodeECPrivateKey
只获取私钥里的d,32位字节- Parameters:
privateKey-PublicKey,必须为org.bouncycastle.jce.interfaces.ECPrivateKey- 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
-
generateSm2PrivateKey
生成SM2私钥,支持包括:- D值
- PKCS#8
- PKCS#1
- OpenSSH格式
- Parameters:
privateKeyBytes- 私钥- Returns:
ECPrivateKeyParameters
-
generateSm2PublicKey
生成SM2公钥,支持包括:- Q值
- X.509
- PKCS#1
- Parameters:
publicKeyBytes- 公钥- Returns:
ECPublicKeyParameters
-
generateSm2PublicKey
尝试解析转换各种类型公钥为ECPublicKeyParameters,支持包括:- Parameters:
x- 坐标Xy- 坐标y- 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
-
isSelfSigned
判断一个证书是否是自签名的,即证书由自己签发。- Parameters:
cert- 证书- Returns:
- true表示自签名的,false表示非自签名的
-
isSignedBy
验证一个证书是否由另一个证书签发。 来自:sun.security.tools.KeyStoreUtil- Parameters:
end- 需要验证的终端证书ca- 用于验证的CA证书- Returns:
- 如果终端证书由CA证书签发,则返回true,否则返回false
-
getPrivateKeySpec
public static org.bouncycastle.jce.spec.ECPrivateKeySpec getPrivateKeySpec(byte[] d, org.bouncycastle.jce.spec.ECParameterSpec parameterSpec) 获取私钥规范- Parameters:
d- 私钥D值parameterSpec-ECParameterSpec- Returns:
- ECPrivateKeySpec
-
getPrivateKeySpec
public static org.bouncycastle.jce.spec.ECPrivateKeySpec getPrivateKeySpec(BigInteger d, org.bouncycastle.jce.spec.ECParameterSpec parameterSpec) 获取私钥规范- Parameters:
d- 私钥D值parameterSpec-ECParameterSpec- Returns:
- ECPrivateKeySpec
-
getPublicKeySpec
public static org.bouncycastle.jce.spec.ECPublicKeySpec getPublicKeySpec(byte[] q, org.bouncycastle.jce.spec.ECParameterSpec parameterSpec) 获取公钥规范- Parameters:
q- 公钥Q值parameterSpec-ECParameterSpec- Returns:
- ECPublicKeySpec
-
getPublicKeySpec
public static org.bouncycastle.jce.spec.ECPublicKeySpec getPublicKeySpec(byte[] x, byte[] y, org.bouncycastle.jce.spec.ECParameterSpec parameterSpec) 获取公钥规范- Parameters:
x- 公钥x坐标y- 公钥y坐标parameterSpec-ECParameterSpec- Returns:
- ECPublicKeySpec
-
getPublicKeySpec
public static org.bouncycastle.jce.spec.ECPublicKeySpec getPublicKeySpec(BigInteger x, BigInteger y, org.bouncycastle.jce.spec.ECParameterSpec parameterSpec) 获取公钥规范- Parameters:
x- 公钥x坐标y- 公钥y坐标parameterSpec-ECParameterSpec- Returns:
- ECPublicKeySpec
-
getPublicKeySpec
public static org.bouncycastle.jce.spec.ECPublicKeySpec getPublicKeySpec(org.bouncycastle.math.ec.ECPoint ecPoint, org.bouncycastle.jce.spec.ECParameterSpec parameterSpec) 获取公钥规范- Parameters:
ecPoint- 公钥坐标parameterSpec-ECParameterSpec- Returns:
- ECPublicKeySpec
-
getOpenSSHPrivateKeySpec
public static org.bouncycastle.jcajce.spec.OpenSSHPrivateKeySpec getOpenSSHPrivateKeySpec(byte[] key) 创建OpenSSHPrivateKeySpec- Parameters:
key- 私钥,需为PKCS#1格式或OpenSSH格式- Returns:
OpenSSHPrivateKeySpec
-
getOpenSSHPublicKeySpec
public static org.bouncycastle.jcajce.spec.OpenSSHPublicKeySpec getOpenSSHPublicKeySpec(byte[] key) 创建OpenSSHPublicKeySpec- Parameters:
key- 公钥,需为PKCS#1格式- Returns:
OpenSSHPublicKeySpec
-