Package org.aoju.bus.crypto
Class Builder
java.lang.Object
org.aoju.bus.crypto.Builder
加密解密模块,实现了对JDK中加密解密算法的封装
安全相关工具/密钥工具类
加密分为三种:
1、对称加密(symmetric),例如:AES、DES等
2、非对称加密(asymmetric),例如:RSA、DSA等
3、摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringCertification类型:X.509static final int默认密钥字节数static final org.bouncycastle.asn1.ASN1ObjectIdentifierSM2国密算法公钥参数的Oid标识static final StringJava密钥库(Java Key Store,JKS)KEY_STOREstatic final StringPKCS12是公钥加密标准,它规定了可包含所有私钥、公钥和证书。其以二进制格式存储,也称为 PFX 文件static final StringSM2默认曲线static final org.bouncycastle.crypto.params.ECDomainParametersSM2推荐曲线参数(来自https://github.com/ZZMarquis/gmhelper) -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic voidaddProvider(Provider provider) 增加加密解密的算法提供者,默认优先使用,例如:static AESaes()AES加密,生成随机KEY。注意解密时必须使用相同AES对象或者使用相同KEY 例:static AESaes(byte[] key) AES加密 例:static byte[]changeC1C2C3ToC1C3C2(byte[] c1c2c3, org.bouncycastle.crypto.params.ECDomainParameters ecDomainParameters) bc加解密使用旧标c1||c2||c3,此方法在加密后调用,将结果转化为c1||c3||c2static byte[]changeC1C3C2ToC1C2C3(byte[] c1c3c2, org.bouncycastle.crypto.params.ECDomainParameters ecDomainParameters) bc加解密使用旧标c1||c3||c2,此方法在解密前调用,将密文转化为c1||c2||c3再去解密static boolean验证密码是否与Bcrypt加密后的密文匹配static CiphercreateCipher(String algorithm) 创建Cipherstatic MacEnginecreateHmacSm3Engine(byte[] key) 创建HmacSM3算法的MacEnginestatic Mac创建Macstatic MessageDigestcreateMessageDigest(String algorithm) static KeySpeccreateOpenSSHPrivateKeySpec(byte[] key) 创建OpenSSHPrivateKeySpecstatic KeySpeccreateOpenSSHPublicKeySpec(byte[] key) 创建OpenSSHPublicKeySpecstatic SignaturecreateSignature(String algorithm) static org.bouncycastle.asn1.ASN1Objectdecode(InputStream in) 读取ASN.1数据流为ASN1Objectstatic byte[]解码字符串密钥,可支持的编码如下:static 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[]数据解密static InputStreamdecrypt(String algorithm, String key, InputStream inputStream) 数据解密static String数据解密static DESdes()DES加密,生成随机KEY。注意解密时必须使用相同DES对象或者使用相同KEY 例:static DESdes(byte[] key) DES加密 例:static DESededesede()DESede加密(又名3DES、TripleDES),生成随机KEY。注意解密时必须使用相同DESede对象或者使用相同KEY Java中默认实现为:DESede/ECB/PKCS5Padding 例:static DESededesede(byte[] key) DESede加密(又名3DES、TripleDES) Java中默认实现为:DESede/ECB/PKCS5Padding 例:static Digester新建摘要器static Digesterdigester(org.aoju.bus.core.lang.Algorithm algorithm) 新建摘要器static voidencode(String asn1Encoding, OutputStream out, org.bouncycastle.asn1.ASN1Encodable... elements) 编码为指定ASN1格式static byte[]编码为指定ASN1格式static byte[]encode(org.bouncycastle.asn1.ASN1Encodable... elements) 编码为DER格式static byte[]encodeECPrivateKey(PrivateKey privateKey) 只获取私钥里的d,32字节static byte[]encodeECPublicKey(PublicKey publicKey) 编码压缩EC公钥(基于BouncyCastle),即Q值 见:https://www.cnblogs.com/xinzhao/p/8963724.htmlstatic byte[]encodeECPublicKey(PublicKey publicKey, boolean isCompressed) 编码压缩EC公钥(基于BouncyCastle),即Q值 见:https://www.cnblogs.com/xinzhao/p/8963724.htmlstatic byte[]数据加密static InputStreamencrypt(String algorithm, String key, InputStream inputStream) 数据加密static String数据加密static 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) 生成用于非对称加密的公钥和私钥,仅用于非对称加密 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGeneratorstatic KeyPairgenerateKeyPair(String algorithm, byte[] seed, AlgorithmParameterSpec param) 生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGeneratorstatic KeyPairgenerateKeyPair(String algorithm, int keySize) 生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGeneratorstatic KeyPairgenerateKeyPair(String algorithm, int keySize, byte[] seed) 生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGeneratorstatic KeyPairgenerateKeyPair(String algorithm, int keySize, byte[] seed, AlgorithmParameterSpec... params) 生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGeneratorstatic KeyPairgenerateKeyPair(String algorithm, int keySize, SecureRandom random, AlgorithmParameterSpec... params) 生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGeneratorstatic KeyPairgenerateKeyPair(String algorithm, AlgorithmParameterSpec params) 生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGeneratorstatic SecretKeygeneratePBEKey(String algorithm, char[] key) 生成PBESecretKeystatic PrivateKeygeneratePrivateKey(String algorithm, byte[] key) 生成私钥,仅用于非对称加密 采用PKCS#8规范,此规范定义了私钥信息语法和加密私钥语法 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactorystatic PrivateKeygeneratePrivateKey(String algorithm, KeySpec keySpec) 生成私钥,仅用于非对称加密 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactorystatic PrivateKeygeneratePrivateKey(KeyStore keyStore, String alias, char[] password) 生成私钥,仅用于非对称加密static PublicKeygeneratePublicKey(String algorithm, byte[] key) 生成公钥,仅用于非对称加密 采用X509证书规范 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactorystatic PublicKeygeneratePublicKey(String algorithm, KeySpec keySpec) 生成公钥,仅用于非对称加密 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactorystatic PrivateKeygenerateRSAPrivateKey(byte[] key) 生成RSA私钥,仅用于非对称加密 采用PKCS#8规范,此规范定义了私钥信息语法和加密私钥语法 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactorystatic PublicKeygenerateRSAPublicKey(byte[] key) 生成RSA公钥,仅用于非对称加密 采用X509证书规范 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactorystatic StringgetAlgorithmAfterWith(String algorithm) 获取用于密钥生成的算法 获取XXXwithXXX算法的后半部分算法,如果为ECDSA或SM2,返回算法为ECstatic CertificategetCertificate(KeyStore keyStore, String alias) 获得 Certificationstatic CertificateFactorygetCertificateFactory(String type) static String获取ASN1格式的导出格式,一般用于调试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 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 String生成Bcrypt加密后的密文static HMachmac(org.aoju.bus.core.lang.Algorithm algorithm, byte[] key) 创建HMac对象,调用digest方法可获得hmac值static HMac创建HMac对象,调用digest方法可获得hmac值static HMac创建HMac对象,调用digest方法可获得hmac值static HMachmacMd5()HmacMD5加密器,生成随机KEY 例: HmacMD5加密:hmacMd5().digest(data) HmacMD5加密并转为16进制字符串:hmacMd5().digestHex(data)static HMachmacMd5(byte[] key) HmacMD5加密器 例: HmacMD5加密:hmacMd5(key).digest(data) HmacMD5加密并转为16进制字符串:hmacMd5(key).digestHex(data)static HMacHmacMD5加密器 例: HmacMD5加密:hmacMd5(key).digest(data) HmacMD5加密并转为16进制字符串:hmacMd5(key).digestHex(data)static HMachmacSha1()HmacSHA1加密器,生成随机KEY 例: HmacSHA1加密:hmacSha1().digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1().digestHex(data)static HMachmacSha1(byte[] key) HmacSHA1加密器 例: HmacSHA1加密:hmacSha1(key).digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1(key).digestHex(data)static HMacHmacSHA1加密器 例: HmacSHA1加密:hmacSha1(key).digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1(key).digestHex(data)static HMacHmacSHA256加密器,生成随机KEY 例: HmacSHA256加密:hmacSha256().digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256().digestHex(data)static HMachmacSha256(byte[] key) HmacSHA256加密器 例: HmacSHA256加密:hmacSha256(key).digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256(key).digestHex(data)static HMachmacSha256(String key) HmacSHA256加密器 例: HmacSHA256加密:hmacSha256(key).digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256(key).digestHex(data)static MD5md5()MD5加密 例:static byte[]md5(byte[] data) 计算32位MD5摘要值static byte[]计算32位MD5摘要值static byte[]md5(InputStream data) 计算32位MD5摘要值static byte[]计算32位MD5摘要值,使用UTF-8编码static byte[]计算32位MD5摘要值static Stringmd5Hex(byte[] data) 计算32位MD5摘要值,并转为16进制字符串static String计算32位MD5摘要值,并转为16进制字符串static Stringmd5Hex(InputStream data) 计算32位MD5摘要值,并转为16进制字符串static String计算32位MD5摘要值,并转为16进制字符串static String计算32位MD5摘要值,并转为16进制字符串static String计算32位MD5摘要值,并转为16进制字符串static Stringmd5Hex16(byte[] data) 计算16位MD5摘要值,并转为16进制字符串static String计算16位MD5摘要值,并转为16进制字符串static Stringmd5Hex16(InputStream data) 计算16位MD5摘要值,并转为16进制字符串static String计算16位MD5摘要值,并转为16进制字符串static String计算16位MD5摘要值,并转为16进制字符串static Stringmd5HexTo16(String md5Hex) 32位MD5转16位MD5static CertificatereadCertificate(String type, InputStream in) 读取Certification文件 Certification为证书文件 see: http://snowolf.iteye.com/blog/391931static CertificatereadCertificate(String type, InputStream in, char[] password, String alias) 读取Certification文件 Certification为证书文件 see: http://snowolf.iteye.com/blog/391931static KeyStorereadJKSKeyStore(File keyFile, char[] password) 读取密钥库(Java Key Store,JKS) KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: http://snowolf.iteye.com/blog/391931static KeyStorereadJKSKeyStore(InputStream in, char[] password) 读取密钥库(Java Key Store,JKS) KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: http://snowolf.iteye.com/blog/391931static KeyStorereadKeyStore(String type, File keyFile, char[] password) 读取KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: http://snowolf.iteye.com/blog/391931static KeyStorereadKeyStore(String type, InputStream in, char[] password) 读取KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: http://snowolf.iteye.com/blog/391931static 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 KeyStorereadPKCS12KeyStore(File keyFile, char[] password) 读取PKCS12 KeyStore文件 KeyStore文件用于数字证书的密钥对保存static KeyStorereadPKCS12KeyStore(InputStream in, char[] password) 读取PKCS12 KeyStore文件 KeyStore文件用于数字证书的密钥对保存static PrivateKeyreadPrivateKey(InputStream pemStream) 读取PEM格式的私钥static PublicKeyreadPublicKey(InputStream pemStream) 读取PEM格式的公钥static PublicKey读取X.509 Certification文件中的公钥 Certification为证书文件 see: https://www.cnblogs.com/yinliang/p/10115519.htmlstatic PrivateKeyreadSm2PemPrivateKey(InputStream keyStream) 读取OpenSSL生成的ANS1格式的Pem私钥文件,必须为PKCS#1格式static Certificate读取X.509 Certification文件 Certification为证书文件 see: http://snowolf.iteye.com/blog/391931static CertificatereadX509Certificate(InputStream in, char[] password, String alias) 读取X.509 Certification文件 Certification为证书文件 see: http://snowolf.iteye.com/blog/391931static RSArsa()创建RSA算法对象 生成新的私钥公钥对static RSArsa(byte[] privateKey, byte[] publicKey) 创建RSA算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密static RSA创建RSA算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密static byte[]rsAsn1ToPlain(byte[] rsDer) BC的SM3withSM2签名得到的结果的rs是asn1格式的,这个方法转化成直接拼接r||sstatic byte[]rsPlainToAsn1(byte[] sign) BC的SM3withSM2验签需要的rs是asn1格式的,这个方法将直接拼接r||s的字节数组转化成asn1格式static Digestersha1()SHA1加密 例: SHA1加密:sha1().digest(data) SHA1加密并转为16进制字符串:sha1().digestHex(data)static byte[]sha1(byte[] data) 计算SHA-1摘要值static byte[]计算SHA-1摘要值static byte[]sha1(InputStream data) 计算SHA-1摘要值static byte[]计算sha1摘要值,使用UTF-8编码static byte[]计算SHA-1摘要值static Stringsha1Hex(byte[] data) 计算SHA-1摘要值,并转为16进制字符串static String计算SHA-1摘要值,并转为16进制字符串static Stringsha1Hex(InputStream data) 计算SHA-1摘要值,并转为16进制字符串static String计算SHA-1摘要值,并转为16进制字符串static String计算SHA-1摘要值,并转为16进制字符串static Digestersha256()SHA256加密 例: SHA256加密:sha256().digest(data) SHA256加密并转为16进制字符串:sha256().digestHex(data)static byte[]sha256(byte[] data) 计算SHA-256摘要值static byte[]计算SHA-256摘要值static byte[]sha256(InputStream data) 计算SHA-256摘要值static byte[]计算sha256摘要值,使用UTF-8编码static byte[]计算SHA-256摘要值static Stringsha256Hex(byte[] data) 计算SHA-1摘要值,并转为16进制字符串static String计算SHA-256摘要值,并转为16进制字符串static Stringsha256Hex(InputStream data) 计算SHA-256摘要值,并转为16进制字符串static String计算SHA-256摘要值,并转为16进制字符串static String计算SHA-256摘要值,并转为16进制字符串static byte[]sha512(byte[] data) 计算SHA-512摘要值static byte[]计算SHA-512摘要值static byte[]sha512(InputStream data) 计算SHA-512摘要值static byte[]计算sha512摘要值,使用UTF-8编码static byte[]计算SHA-512摘要值static Stringsha512Hex(byte[] data) 计算SHA-1摘要值,并转为16进制字符串static String计算SHA-512摘要值,并转为16进制字符串static Stringsha512Hex(InputStream data) 计算SHA-512摘要值,并转为16进制字符串static String计算SHA-512摘要值,并转为16进制字符串static String计算SHA-512摘要值,并转为16进制字符串static Signsign(org.aoju.bus.core.lang.Algorithm algorithm) 创建签名算法对象 生成新的私钥公钥对static Signsign(org.aoju.bus.core.lang.Algorithm algorithm, byte[] privateKey, byte[] publicKey) 创建Sign算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证static Sign创建签名算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证static StringsignParams(org.aoju.bus.core.lang.Algorithm algorithm, Map<?, ?> params, String... other) 对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值static StringsignParams(org.aoju.bus.core.lang.Algorithm algorithm, Map<?, ?> params, String separator, String keyValueSeparator, boolean isIgnoreNull, String... other) 对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串static StringsignParams(Crypto crypto, Map<?, ?> params, String... other) 对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值static StringsignParams(Crypto crypto, Map<?, ?> params, String separator, String keyValueSeparator, boolean isIgnoreNull, String... other) 对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串static StringsignParamsMd5(Map<?, ?> params, String... other) 对参数做md5签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值static StringsignParamsSha1(Map<?, ?> params, String... other) 对参数做Sha1签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值static StringsignParamsSha256(Map<?, ?> params, String... other) 对参数做Sha256签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值static SM2sm2()创建SM2算法对象 生成新的私钥公钥对static SM2sm2(byte[] privateKey, byte[] publicKey) 创建SM2算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密static SM2创建SM2算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密static SM2sm2(PrivateKey privateKey, PublicKey publicKey) 创建SM2算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密static SM2sm2(org.bouncycastle.crypto.params.ECPrivateKeyParameters privateKeyParams, org.bouncycastle.crypto.params.ECPublicKeyParameters publicKeyParams) 创建SM2算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密static SM3sm3()SM3加密 例: SM3加密:sm3().digest(data) SM3加密并转为16进制字符串:sm3().digestHex(data)static SM3sm3(byte[] salt) SM3加密,可以传入盐static StringSM3加密文件,生成16进制SM3字符串static Stringsm3(InputStream data) SM3加密,生成16进制SM3字符串static StringSM3加密,生成16进制SM3字符串static SM4sm4()SM4加密,生成随机KEY 注意解密时必须使用相同SM4对象或者使用相同KEY 例:static SM4sm4(byte[] key) SM4加密 例:static org.bouncycastle.crypto.params.ECDomainParameterstoDomainParams(String curveName) 构建ECDomainParameters对象static org.bouncycastle.crypto.params.ECDomainParameterstoDomainParams(org.bouncycastle.asn1.x9.X9ECParameters x9ECParameters) 构建ECDomainParameters对象static org.bouncycastle.crypto.params.ECDomainParameterstoDomainParams(org.bouncycastle.jce.spec.ECParameterSpec parameterSpec) 构建ECDomainParameters对象static org.bouncycastle.crypto.params.ECPublicKeyParameterstoParams(byte[] xBytes, byte[] yBytes, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为ECPublicKeyParametersstatic org.bouncycastle.crypto.params.ECPrivateKeyParameterstoParams(byte[] d, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为 ECPrivateKeyParametersstatic org.bouncycastle.crypto.params.ECPublicKeyParameterstoParams(String xHex, String yHex, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为ECPublicKeyParametersstatic org.bouncycastle.crypto.params.ECPrivateKeyParameters转换为 ECPrivateKeyParametersstatic org.bouncycastle.crypto.params.ECPublicKeyParameterstoParams(BigInteger x, BigInteger y, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为ECPublicKeyParametersstatic org.bouncycastle.crypto.params.ECPrivateKeyParameterstoParams(BigInteger d, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为 ECPrivateKeyParametersstatic org.bouncycastle.crypto.params.AsymmetricKeyParameter密钥转换为AsymmetricKeyParameterstatic org.bouncycastle.crypto.params.ECPrivateKeyParameterstoParams(PrivateKey privateKey) 私钥转换为ECPrivateKeyParametersstatic org.bouncycastle.crypto.params.ECPublicKeyParameters公钥转换为ECPublicKeyParametersstatic String将私钥或公钥转换为PEM格式的字符串static byte[]toPkcs1(PrivateKey privateKey) Java中的PKCS#8格式私钥转换为OpenSSL支持的PKCS#1格式static byte[]Java中的X.509格式公钥转换为OpenSSL支持的PKCS#1格式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 org.bouncycastle.crypto.params.ECPrivateKeyParameterstoSm2Params(byte[] d) 转换为 ECPrivateKeyParametersstatic org.bouncycastle.crypto.params.ECPublicKeyParameterstoSm2Params(byte[] xBytes, byte[] yBytes) 转换为SM2的ECPublicKeyParametersstatic org.bouncycastle.crypto.params.ECPrivateKeyParameters转换为 ECPrivateKeyParametersstatic org.bouncycastle.crypto.params.ECPublicKeyParameterstoSm2Params(String xHex, String yHex) 转换为SM2的ECPublicKeyParametersstatic org.bouncycastle.crypto.params.ECPrivateKeyParameters转换为 ECPrivateKeyParametersstatic 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
-
KEY_TYPE_JKS
Java密钥库(Java Key Store,JKS)KEY_STORE- See Also:
-
KEY_TYPE_PKCS12
PKCS12是公钥加密标准,它规定了可包含所有私钥、公钥和证书。其以二进制格式存储,也称为 PFX 文件- See Also:
-
CERT_TYPE_X509
Certification类型:X.509- See Also:
-
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:
-
SM2_DEFAULT_CURVE
SM2默认曲线Default SM2 curve
- See Also:
-
SM2_DOMAIN_PARAMS
public static final org.bouncycastle.crypto.params.ECDomainParameters SM2_DOMAIN_PARAMSSM2推荐曲线参数(来自https://github.com/ZZMarquis/gmhelper) -
ID_SM2_PUBLIC_KEY_PARAM
public static final org.bouncycastle.asn1.ASN1ObjectIdentifier ID_SM2_PUBLIC_KEY_PARAMSM2国密算法公钥参数的Oid标识
-
-
Constructor Details
-
Builder
public Builder()
-
-
Method Details
-
md5
MD5加密 例:MD5加密:md5().digest(data) MD5加密并转为16进制字符串:md5().digestHex(data)
- Returns:
Digester
-
md5
public static byte[] md5(byte[] data) 计算32位MD5摘要值- Parameters:
data- 被摘要数据- Returns:
- MD5摘要
-
md5
计算32位MD5摘要值- Parameters:
data- 被摘要数据charset- 编码- Returns:
- MD5摘要
-
md5
计算32位MD5摘要值,使用UTF-8编码- Parameters:
data- 被摘要数据- Returns:
- MD5摘要
-
md5
计算32位MD5摘要值- Parameters:
data- 被摘要数据- Returns:
- MD5摘要
-
md5
计算32位MD5摘要值- Parameters:
file- 被摘要文件- Returns:
- MD5摘要
-
md5Hex
计算32位MD5摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据- Returns:
- MD5摘要的16进制表示
-
md5Hex
计算32位MD5摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据charset- 编码- Returns:
- MD5摘要的16进制表示
-
md5Hex
计算32位MD5摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据charset- 编码- Returns:
- MD5摘要的16进制表示
-
md5Hex
计算32位MD5摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据- Returns:
- MD5摘要的16进制表示
-
md5Hex
计算32位MD5摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据- Returns:
- MD5摘要的16进制表示
-
md5Hex
计算32位MD5摘要值,并转为16进制字符串- Parameters:
file- 被摘要文件- Returns:
- MD5摘要的16进制表示
-
md5Hex16
计算16位MD5摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据- Returns:
- MD5摘要的16进制表示
-
md5Hex16
计算16位MD5摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据charset- 编码- Returns:
- MD5摘要的16进制表示
-
md5Hex16
计算16位MD5摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据- Returns:
- MD5摘要的16进制表示
-
md5Hex16
计算16位MD5摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据- Returns:
- MD5摘要的16进制表示
-
md5Hex16
计算16位MD5摘要值,并转为16进制字符串- Parameters:
file- 被摘要文件- Returns:
- MD5摘要的16进制表示
-
md5HexTo16
32位MD5转16位MD5- Parameters:
md5Hex- 32位MD5- Returns:
- 16位MD5
-
sha1
SHA1加密 例: SHA1加密:sha1().digest(data) SHA1加密并转为16进制字符串:sha1().digestHex(data)- Returns:
Digester
-
sha1
public static byte[] sha1(byte[] data) 计算SHA-1摘要值- Parameters:
data- 被摘要数据- Returns:
- SHA-1摘要
-
sha1
计算SHA-1摘要值- Parameters:
data- 被摘要数据charset- 编码- Returns:
- SHA-1摘要
-
sha1
计算sha1摘要值,使用UTF-8编码- Parameters:
data- 被摘要数据- Returns:
- MD5摘要
-
sha1
计算SHA-1摘要值- Parameters:
data- 被摘要数据- Returns:
- SHA-1摘要
-
sha1
计算SHA-1摘要值- Parameters:
file- 被摘要文件- Returns:
- SHA-1摘要
-
sha1Hex
计算SHA-1摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据- Returns:
- SHA-1摘要的16进制表示
-
sha1Hex
计算SHA-1摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据charset- 编码- Returns:
- SHA-1摘要的16进制表示
-
sha1Hex
计算SHA-1摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据- Returns:
- SHA-1摘要的16进制表示
-
sha1Hex
计算SHA-1摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据- Returns:
- SHA-1摘要的16进制表示
-
sha1Hex
计算SHA-1摘要值,并转为16进制字符串- Parameters:
file- 被摘要文件- Returns:
- SHA-1摘要的16进制表示
-
sha256
SHA256加密 例: SHA256加密:sha256().digest(data) SHA256加密并转为16进制字符串:sha256().digestHex(data)- Returns:
Digester
-
sha256
public static byte[] sha256(byte[] data) 计算SHA-256摘要值- Parameters:
data- 被摘要数据- Returns:
- SHA-256摘要
-
sha256
计算SHA-256摘要值- Parameters:
data- 被摘要数据charset- 编码- Returns:
- SHA-256摘要
-
sha256
计算sha256摘要值,使用UTF-8编码- Parameters:
data- 被摘要数据- Returns:
- SHA-256摘要
-
sha256
计算SHA-256摘要值- Parameters:
data- 被摘要数据- Returns:
- SHA-256摘要
-
sha256
计算SHA-256摘要值- Parameters:
file- 被摘要文件- Returns:
- SHA-256摘要
-
sha256Hex
计算SHA-1摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据- Returns:
- SHA-256摘要的16进制表示
-
sha256Hex
计算SHA-256摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据charset- 编码- Returns:
- SHA-256摘要的16进制表示
-
sha256Hex
计算SHA-256摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据- Returns:
- SHA-256摘要的16进制表示
-
sha256Hex
计算SHA-256摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据- Returns:
- SHA-256摘要的16进制表示
-
sha256Hex
计算SHA-256摘要值,并转为16进制字符串- Parameters:
file- 被摘要文件- Returns:
- SHA-256摘要的16进制表示
-
hmac
创建HMac对象,调用digest方法可获得hmac值- Parameters:
algorithm-Algorithmkey- 密钥,如果为null生成随机密钥- Returns:
HMac
-
hmac
创建HMac对象,调用digest方法可获得hmac值- Parameters:
algorithm-Algorithmkey- 密钥,如果为null生成随机密钥- Returns:
HMac
-
hmac
创建HMac对象,调用digest方法可获得hmac值 -
hmacMd5
HmacMD5加密器 例: HmacMD5加密:hmacMd5(key).digest(data) HmacMD5加密并转为16进制字符串:hmacMd5(key).digestHex(data)- Parameters:
key- 加密密钥,如果为null生成随机密钥- Returns:
HMac
-
hmacMd5
HmacMD5加密器 例: HmacMD5加密:hmacMd5(key).digest(data) HmacMD5加密并转为16进制字符串:hmacMd5(key).digestHex(data)- Parameters:
key- 加密密钥,如果为null生成随机密钥- Returns:
HMac
-
hmacMd5
HmacMD5加密器,生成随机KEY 例: HmacMD5加密:hmacMd5().digest(data) HmacMD5加密并转为16进制字符串:hmacMd5().digestHex(data)- Returns:
HMac
-
hmacSha1
HmacSHA1加密器 例: HmacSHA1加密:hmacSha1(key).digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1(key).digestHex(data)- Parameters:
key- 加密密钥,如果为null生成随机密钥- Returns:
HMac
-
hmacSha1
HmacSHA1加密器 例: HmacSHA1加密:hmacSha1(key).digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1(key).digestHex(data)- Parameters:
key- 加密密钥,如果为null生成随机密钥- Returns:
HMac
-
hmacSha1
HmacSHA1加密器,生成随机KEY 例: HmacSHA1加密:hmacSha1().digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1().digestHex(data)- Returns:
HMac
-
hmacSha256
HmacSHA256加密器 例: HmacSHA256加密:hmacSha256(key).digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256(key).digestHex(data)- Parameters:
key- 加密密钥,如果为null生成随机密钥- Returns:
HMac
-
hmacSha256
HmacSHA256加密器 例: HmacSHA256加密:hmacSha256(key).digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256(key).digestHex(data)- Parameters:
key- 加密密钥,如果为null生成随机密钥- Returns:
HMac
-
hmacSha256
HmacSHA256加密器,生成随机KEY 例: HmacSHA256加密:hmacSha256().digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256().digestHex(data)- Returns:
HMac
-
rsa
创建RSA算法对象 生成新的私钥公钥对- Returns:
RSA
-
rsa
创建RSA算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密- Parameters:
privateKey- 私钥Base64publicKey- 公钥Base64- Returns:
RSA
-
rsa
创建RSA算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密- Parameters:
privateKey- 私钥publicKey- 公钥- Returns:
RSA
-
sm2
创建SM2算法对象 生成新的私钥公钥对- Returns:
SM2
-
sm2
创建SM2算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密- Parameters:
privateKey- 私钥Hex或Base64表示publicKey- 公钥Hex或Base64表示- Returns:
SM2
-
sm2
创建SM2算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密- Parameters:
privateKey- 私钥,必须使用PKCS#8规范publicKey- 公钥,必须使用X509规范- Returns:
SM2
-
sm2
创建SM2算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密- Parameters:
privateKey- 私钥publicKey- 公钥- Returns:
SM2
-
sm2
public static SM2 sm2(org.bouncycastle.crypto.params.ECPrivateKeyParameters privateKeyParams, org.bouncycastle.crypto.params.ECPublicKeyParameters publicKeyParams) 创建SM2算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密- Parameters:
privateKeyParams- 私钥参数publicKeyParams- 公钥参数- Returns:
SM2
-
sm3
SM3加密 例: SM3加密:sm3().digest(data) SM3加密并转为16进制字符串:sm3().digestHex(data)- Returns:
SM3
-
sm3
SM3加密,生成16进制SM3字符串- Parameters:
data- 数据- Returns:
- SM3字符串
-
sm3
SM3加密,可以传入盐- Parameters:
salt- 加密盐- Returns:
SM3
-
sm3
SM3加密,生成16进制SM3字符串- Parameters:
data- 数据- Returns:
- SM3字符串
-
sm3
SM3加密文件,生成16进制SM3字符串- Parameters:
dataFile- 被加密文件- Returns:
- SM3字符串
-
sm4
SM4加密,生成随机KEY 注意解密时必须使用相同SM4对象或者使用相同KEY 例:SM4加密:sm4().encrypt(data) SM4解密:sm4().decrypt(data)
- Returns:
SM4
-
sm4
SM4加密 例:SM4加密:sm4(key).encrypt(data) SM4解密:sm4(key).decrypt(data)
- Parameters:
key- 密钥- Returns:
SM4
-
aes
AES加密,生成随机KEY。注意解密时必须使用相同AES对象或者使用相同KEY 例:AES加密:aes().encrypt(data) AES解密:aes().decrypt(data)
- Returns:
AES
-
aes
AES加密 例:AES加密:aes(key).encrypt(data) AES解密:aes(key).decrypt(data)
- Parameters:
key- 密钥- Returns:
Crypto
-
des
DES加密,生成随机KEY。注意解密时必须使用相同DES对象或者使用相同KEY 例:DES加密:des().encrypt(data) DES解密:des().decrypt(data)
- Returns:
DES
-
des
DES加密 例:DES加密:des(key).encrypt(data) DES解密:des(key).decrypt(data)
- Parameters:
key- 密钥- Returns:
DES
-
desede
DESede加密(又名3DES、TripleDES),生成随机KEY。注意解密时必须使用相同DESede对象或者使用相同KEY Java中默认实现为:DESede/ECB/PKCS5Padding 例:DESede加密:desede().encrypt(data) DESede解密:desede().decrypt(data)
- Returns:
DESede
-
desede
DESede加密(又名3DES、TripleDES) Java中默认实现为:DESede/ECB/PKCS5Padding 例:DESede加密:desede(key).encrypt(data) DESede解密:desede(key).decrypt(data)
- Parameters:
key- 密钥- Returns:
DESede
-
sign
创建签名算法对象 生成新的私钥公钥对- Parameters:
algorithm- 签名算法- Returns:
Sign
-
sign
public static Sign sign(org.aoju.bus.core.lang.Algorithm algorithm, String privateKey, String publicKey) 创建签名算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证- Parameters:
algorithm- 签名算法privateKey- 私钥Base64publicKey- 公钥Base64- Returns:
Sign
-
sign
public static Sign sign(org.aoju.bus.core.lang.Algorithm algorithm, byte[] privateKey, byte[] publicKey) 创建Sign算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证- Parameters:
algorithm- 算法枚举privateKey- 私钥publicKey- 公钥- Returns:
Sign
-
sha512
public static byte[] sha512(byte[] data) 计算SHA-512摘要值- Parameters:
data- 被摘要数据- Returns:
- SHA-512摘要
-
sha512
计算SHA-512摘要值- Parameters:
data- 被摘要数据charset- 编码- Returns:
- SHA-512摘要
- Since:
- 3.0.8
-
sha512
计算sha512摘要值,使用UTF-8编码- Parameters:
data- 被摘要数据- Returns:
- MD5摘要
-
sha512
计算SHA-512摘要值- Parameters:
data- 被摘要数据- Returns:
- SHA-512摘要
-
sha512
计算SHA-512摘要值- Parameters:
file- 被摘要文件- Returns:
- SHA-512摘要
-
sha512Hex
计算SHA-1摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据- Returns:
- SHA-512摘要的16进制表示
-
sha512Hex
计算SHA-512摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据charset- 编码- Returns:
- SHA-512摘要的16进制表示
-
sha512Hex
计算SHA-512摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据- Returns:
- SHA-512摘要的16进制表示
-
sha512Hex
计算SHA-512摘要值,并转为16进制字符串- Parameters:
data- 被摘要数据- Returns:
- SHA-512摘要的16进制表示
-
sha512Hex
计算SHA-512摘要值,并转为16进制字符串- Parameters:
file- 被摘要文件- Returns:
- SHA-512摘要的16进制表示
-
digester
新建摘要器- Parameters:
algorithm- 签名算法- Returns:
- Digester
-
digester
新建摘要器- Parameters:
algorithm- 签名算法- Returns:
- Digester
-
encrypt
数据加密- Parameters:
algorithm- 加密算法key- 密钥, 字符串使用,分割 格式: 私钥,公钥,类型content- 需要加密的内容- Returns:
- 加密结果
-
encrypt
数据加密- Parameters:
algorithm- 解密算法key- 密钥, 字符串使用,分割 格式: 私钥,公钥,类型content- 需要加密的内容charset- 字符集- Returns:
- 加密结果
-
encrypt
数据加密- Parameters:
algorithm- 加密算法key- 密钥, 字符串使用,分割 格式: 私钥,公钥,类型inputStream- 需要加密的内容- Returns:
- 加密结果
-
decrypt
数据解密- Parameters:
algorithm- 加密算法key- 密钥, 字符串使用,分割 格式: 私钥,公钥,类型content- 需要解密的内容- Returns:
- 解密结果
-
decrypt
数据解密- Parameters:
algorithm- 解密算法key- 密钥, 字符串使用,分割 格式: 私钥,公钥,类型content- 需要解密的内容charset- 字符集- Returns:
- 解密结果
-
decrypt
数据解密- Parameters:
algorithm- 解密算法key- 密钥, 字符串使用,分割 格式: 私钥,公钥,类型inputStream- 需要解密的内容- Returns:
- 解密结果
-
encode
public static byte[] encode(org.bouncycastle.asn1.ASN1Encodable... elements) 编码为DER格式- Parameters:
elements- ASN.1元素- Returns:
- 编码后的bytes
-
encode
编码为指定ASN1格式- Parameters:
asn1Encoding- 编码格式,见ASN1Encoding,可选DER、BER或DLelements- ASN.1元素- Returns:
- 编码后的bytes
-
encode
public static void encode(String asn1Encoding, OutputStream out, org.bouncycastle.asn1.ASN1Encodable... elements) 编码为指定ASN1格式- Parameters:
asn1Encoding- 编码格式,见ASN1Encoding,可选DER、BER或DLout- 输出流elements- ASN.1元素
-
decode
读取ASN.1数据流为ASN1Object- Parameters:
in- ASN.1数据- Returns:
ASN1Object
-
getDumpStr
获取ASN1格式的导出格式,一般用于调试- Parameters:
in- ASN.1数据- Returns:
ASN1Object的字符串表示形式- See Also:
-
ASN1Dump.dumpAsString(Object)
-
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.BCECPublicKey- Returns:
- 压缩得到的Q
-
encodeECPublicKey
编码压缩EC公钥(基于BouncyCastle),即Q值 见:https://www.cnblogs.com/xinzhao/p/8963724.html- Parameters:
publicKey-PublicKey,必须为org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKeyisCompressed- 是否压缩- Returns:
- 得到的Q
-
decode
解码字符串密钥,可支持的编码如下:1. Hex(16进制)编码 1. Base64编码
- Parameters:
key- 被解码的密钥字符串- Returns:
- 密钥
-
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曲线名,例如SM2_DOMAIN_PARAMS- Returns:
- 公钥
-
toDomainParams
public static org.bouncycastle.crypto.params.ECDomainParameters toDomainParams(org.bouncycastle.jce.spec.ECParameterSpec parameterSpec) 构建ECDomainParameters对象- Parameters:
parameterSpec- ECParameterSpec- Returns:
ECDomainParameters
-
toDomainParams
构建ECDomainParameters对象- Parameters:
curveName- Curve名称- Returns:
ECDomainParameters
-
toDomainParams
public static org.bouncycastle.crypto.params.ECDomainParameters toDomainParams(org.bouncycastle.asn1.x9.X9ECParameters x9ECParameters) 构建ECDomainParameters对象- Parameters:
x9ECParameters-X9ECParameters- Returns:
ECDomainParameters
-
toSm2Params
转换为 ECPrivateKeyParameters- Parameters:
d- 私钥d值- Returns:
- ECPrivateKeyParameters
-
toParams
public static org.bouncycastle.crypto.params.ECPrivateKeyParameters toParams(String dHex, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为 ECPrivateKeyParameters- Parameters:
dHex- 私钥d值16进制字符串domainParameters- ECDomainParameters- Returns:
- ECPrivateKeyParameters
-
toSm2Params
public static org.bouncycastle.crypto.params.ECPrivateKeyParameters toSm2Params(byte[] d) 转换为 ECPrivateKeyParameters- Parameters:
d- 私钥d值- Returns:
- ECPrivateKeyParameters
-
toParams
public static org.bouncycastle.crypto.params.ECPrivateKeyParameters toParams(byte[] d, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为 ECPrivateKeyParameters- Parameters:
d- 私钥d值domainParameters- ECDomainParameters- Returns:
- ECPrivateKeyParameters
-
toSm2Params
转换为 ECPrivateKeyParameters- Parameters:
d- 私钥d值- Returns:
- ECPrivateKeyParameters
-
toParams
public static org.bouncycastle.crypto.params.ECPrivateKeyParameters toParams(BigInteger d, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为 ECPrivateKeyParameters- Parameters:
d- 私钥d值domainParameters- ECDomainParameters- Returns:
- ECPrivateKeyParameters
-
toParams
public static org.bouncycastle.crypto.params.ECPublicKeyParameters toParams(BigInteger x, BigInteger y, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为ECPublicKeyParameters- Parameters:
x- 公钥Xy- 公钥YdomainParameters- ECDomainParameters- Returns:
- ECPublicKeyParameters
-
toSm2Params
public static org.bouncycastle.crypto.params.ECPublicKeyParameters toSm2Params(String xHex, String yHex) 转换为SM2的ECPublicKeyParameters- Parameters:
xHex- 公钥XyHex- 公钥Y- Returns:
- ECPublicKeyParameters
-
toParams
public static org.bouncycastle.crypto.params.ECPublicKeyParameters toParams(String xHex, String yHex, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为ECPublicKeyParameters- Parameters:
xHex- 公钥XyHex- 公钥YdomainParameters- ECDomainParameters- Returns:
- ECPublicKeyParameters
-
toSm2Params
public static org.bouncycastle.crypto.params.ECPublicKeyParameters toSm2Params(byte[] xBytes, byte[] yBytes) 转换为SM2的ECPublicKeyParameters- Parameters:
xBytes- 公钥XyBytes- 公钥Y- Returns:
- ECPublicKeyParameters
-
toParams
public static org.bouncycastle.crypto.params.ECPublicKeyParameters toParams(byte[] xBytes, byte[] yBytes, org.bouncycastle.crypto.params.ECDomainParameters domainParameters) 转换为ECPublicKeyParameters- Parameters:
xBytes- 公钥XyBytes- 公钥YdomainParameters- ECDomainParameters- Returns:
- ECPublicKeyParameters
-
toParams
公钥转换为ECPublicKeyParameters- Parameters:
publicKey- 公钥,传入null返回null- Returns:
ECPublicKeyParameters或null
-
toParams
私钥转换为ECPrivateKeyParameters- Parameters:
privateKey- 私钥,传入null返回null- Returns:
ECPrivateKeyParameters或null
-
toPkcs1
Java中的PKCS#8格式私钥转换为OpenSSL支持的PKCS#1格式- Parameters:
privateKey- PKCS#8格式私钥- Returns:
- PKCS#1格式私钥
-
toPkcs1
Java中的X.509格式公钥转换为OpenSSL支持的PKCS#1格式- Parameters:
publicKey- X.509格式公钥- Returns:
- PKCS#1格式公钥
-
signParams
对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值- Parameters:
crypto- 对称加密算法params- 参数other- 其它附加参数字符串(例如密钥)- Returns:
- 签名
-
signParams
public static String signParams(Crypto crypto, Map<?, ?> params, String separator, String keyValueSeparator, boolean isIgnoreNull, String... other) 对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串- Parameters:
crypto- 对称加密算法params- 参数separator- entry之间的连接符keyValueSeparator- kv之间的连接符isIgnoreNull- 是否忽略null的键和值other- 其它附加参数字符串(例如密钥)- Returns:
- 签名
-
signParamsMd5
对参数做md5签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值- Parameters:
params- 参数other- 其它附加参数字符串(例如密钥)- Returns:
- 签名
-
signParamsSha1
对参数做Sha1签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值- Parameters:
params- 参数other- 其它附加参数字符串(例如密钥)- Returns:
- 签名
-
signParamsSha256
对参数做Sha256签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值- Parameters:
params- 参数other- 其它附加参数字符串(例如密钥)- Returns:
- 签名
-
signParams
public static String signParams(org.aoju.bus.core.lang.Algorithm algorithm, Map<?, ?> params, String... other) 对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值- Parameters:
algorithm- 摘要算法params- 参数other- 其它附加参数字符串(例如密钥)- Returns:
- 签名
-
signParams
public static String signParams(org.aoju.bus.core.lang.Algorithm algorithm, Map<?, ?> params, String separator, String keyValueSeparator, boolean isIgnoreNull, String... other) 对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串- Parameters:
algorithm- 摘要算法params- 参数separator- entry之间的连接符keyValueSeparator- kv之间的连接符isIgnoreNull- 是否忽略null的键和值other- 其它附加参数字符串(例如密钥)- 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
-
generateKey
生成SecretKey,仅用于对称加密和摘要算法密钥生成- Parameters:
algorithm- 算法,支持PBE算法- Returns:
SecretKey
-
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
-
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等key- 密钥- Returns:
SecretKey
-
generateKey
生成SecretKey,仅用于对称加密和摘要算法 -
generateRSAPrivateKey
生成RSA私钥,仅用于非对称加密 采用PKCS#8规范,此规范定义了私钥信息语法和加密私钥语法 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory- Parameters:
key- 密钥,必须为DER编码存储- Returns:
- RSA私钥
PrivateKey
-
generatePublicKey
生成公钥,仅用于非对称加密 采用X509证书规范 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory- Parameters:
algorithm- 算法key- 密钥,必须为DER编码存储- Returns:
- 公钥
PublicKey
-
generatePrivateKey
生成私钥,仅用于非对称加密 采用PKCS#8规范,此规范定义了私钥信息语法和加密私钥语法 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory- Parameters:
algorithm- 算法,如RSA、EC、SM2等key- 密钥,PKCS#8格式- Returns:
- 私钥
PrivateKey
-
generatePrivateKey
生成私钥,仅用于非对称加密 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory- Parameters:
algorithm- 算法,如RSA、EC、SM2等keySpec-KeySpec- Returns:
- 私钥
PrivateKey
-
generatePrivateKey
生成私钥,仅用于非对称加密- Parameters:
keyStore-KeyStorealias- 别名password- 密码- Returns:
- 私钥
PrivateKey
-
generateRSAPublicKey
生成RSA公钥,仅用于非对称加密 采用X509证书规范 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory- Parameters:
key- 密钥,必须为DER编码存储- Returns:
- 公钥
PublicKey
-
generateKeyPair
生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator- Parameters:
algorithm- 非对称加密算法params-AlgorithmParameterSpec- Returns:
KeyPair
-
generateKeyPair
生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator- Parameters:
algorithm- 非对称加密算法param-AlgorithmParameterSpecseed- 种子- Returns:
KeyPair
-
generatePublicKey
生成公钥,仅用于非对称加密 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory -
generateKeyPair
生成用于非对称加密的公钥和私钥,仅用于非对称加密 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator- Parameters:
algorithm- 非对称加密算法- Returns:
KeyPair
-
generateKeyPair
生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator- Parameters:
algorithm- 非对称加密算法keySize- 密钥模(modulus )长度- Returns:
KeyPair
-
generateKeyPair
生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator- Parameters:
algorithm- 非对称加密算法keySize- 密钥模(modulus )长度seed- 种子- Returns:
KeyPair
-
generateKeyPair
public static KeyPair generateKeyPair(String algorithm, int keySize, byte[] seed, AlgorithmParameterSpec... params) 生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator对于非对称加密算法,密钥长度有严格限制,具体如下:
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) 生成用于非对称加密的公钥和私钥 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator对于非对称加密算法,密钥长度有严格限制,具体如下:
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
-
getKeyPairGenerator
- Parameters:
algorithm- 非对称加密算法- Returns:
KeyPairGenerator
-
getKeyFactory
- Parameters:
algorithm- 非对称加密算法- Returns:
KeyFactory
-
readJKSKeyStore
读取密钥库(Java Key Store,JKS) KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: http://snowolf.iteye.com/blog/391931- Parameters:
keyFile- 证书文件password- 密码- Returns:
KeyStore
-
getSecretKeyFactory
- Parameters:
algorithm- 对称加密算法- Returns:
KeyFactory
-
readPKCS12KeyStore
读取PKCS12 KeyStore文件 KeyStore文件用于数字证书的密钥对保存- Parameters:
keyFile- 证书文件password- 密码- Returns:
KeyStore
-
readPKCS12KeyStore
读取PKCS12 KeyStore文件 KeyStore文件用于数字证书的密钥对保存- Parameters:
in-InputStream如果想从文件读取.keystore文件,使用FileKit.getInputStream(java.io.File)读取password- 密码- Returns:
KeyStore
-
readKeyStore
读取KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: http://snowolf.iteye.com/blog/391931- Parameters:
type- 类型keyFile- 证书文件password- 密码,null表示无密码- Returns:
KeyStore
-
getKeyGenerator
- Parameters:
algorithm- 对称加密算法- Returns:
KeyGenerator
-
getKeyPair
从KeyStore中获取私钥公钥- Parameters:
type- 类型in-InputStream如果想从文件读取.keystore文件,使用FileKit.getInputStream(java.io.File)读取password- 密码alias- 别名- Returns:
KeyPair
-
getMainAlgorithm
获取主体算法名,例如RSA/ECB/PKCS1Padding的主体算法是RSA- Parameters:
algorithm- XXXwithXXX算法- Returns:
- 主体算法名
-
getAlgorithmAfterWith
获取用于密钥生成的算法 获取XXXwithXXX算法的后半部分算法,如果为ECDSA或SM2,返回算法为EC- Parameters:
algorithm- XXXwithXXX算法- Returns:
- 算法
-
readJKSKeyStore
读取密钥库(Java Key Store,JKS) KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: http://snowolf.iteye.com/blog/391931- Parameters:
in-InputStream如果想从文件读取.keystore文件,使用FileKit.getInputStream(java.io.File)读取password- 密码- Returns:
KeyStore
-
readKeyStore
读取KeyStore文件 KeyStore文件用于数字证书的密钥对保存 see: http://snowolf.iteye.com/blog/391931- Parameters:
type- 类型in-InputStream如果想从文件读取.keystore文件,使用FileKit.getInputStream(java.io.File)读取password- 密码,null表示无密码- Returns:
KeyStore
-
getKeyPair
从KeyStore中获取私钥公钥 -
readX509Certificate
读取X.509 Certification文件 Certification为证书文件 see: http://snowolf.iteye.com/blog/391931- Parameters:
in-InputStream如果想从文件读取.cer文件,使用FileKit.getInputStream(java.io.File)读取password- 密码alias- 别名- Returns:
KeyStore
-
readPublicKeyFromCert
读取X.509 Certification文件中的公钥 Certification为证书文件 see: https://www.cnblogs.com/yinliang/p/10115519.html- Parameters:
in-InputStream如果想从文件读取.cer文件,使用FileKit.getInputStream(java.io.File)读取- Returns:
KeyStore
-
readX509Certificate
读取X.509 Certification文件 Certification为证书文件 see: http://snowolf.iteye.com/blog/391931- Parameters:
in-InputStream如果想从文件读取.cer文件,使用FileKit.getInputStream(java.io.File)读取- Returns:
KeyStore
-
readCertificate
public static Certificate readCertificate(String type, InputStream in, char[] password, String alias) 读取Certification文件 Certification为证书文件 see: http://snowolf.iteye.com/blog/391931- Parameters:
type- 类型,例如X.509in-InputStream如果想从文件读取.cer文件,使用FileKit.getInputStream(java.io.File)读取password- 密码alias- 别名- Returns:
KeyStore
-
readCertificate
读取Certification文件 Certification为证书文件 see: http://snowolf.iteye.com/blog/391931- Parameters:
type- 类型,例如X.509in-InputStream如果想从文件读取.cer文件,使用FileKit.getInputStream(java.io.File)读取- Returns:
Certificate
-
getCertificate
获得 Certification- Parameters:
keyStore-KeyStorealias- 别名- Returns:
Certificate
-
getCertificateFactory
- Parameters:
type- 类型,例如X.509- Returns:
KeyPairGenerator
-
getRSAPublicKey
通过RSA私钥生成RSA公钥- Parameters:
privateKey- RSA私钥- Returns:
- RSA公钥,null表示私钥不被支持
-
getRSAPublicKey
获得RSA公钥对象- Parameters:
modulus- ModuluspublicExponent- Public Exponent- Returns:
- 公钥
-
readPem
从pem流中读取公钥或私钥- Parameters:
keyStream- pem流- Returns:
- 密钥bytes
-
getRSAPublicKey
获得RSA公钥对象- Parameters:
modulus- ModuluspublicExponent- Public Exponent- Returns:
- 公钥
-
readPrivateKey
读取PEM格式的私钥- Parameters:
pemStream- pem流- Returns:
PrivateKey
-
readPublicKey
读取PEM格式的公钥- Parameters:
pemStream- pem流- Returns:
PublicKey
-
readPemKey
从pem文件中读取公钥或私钥 根据类型返回PublicKey或者PrivateKey- Parameters:
keyStream- pem流- Returns:
Key,null表示无法识别的密钥类型
-
writePemObject
写出pem密钥(私钥、公钥、证书)- Parameters:
type- 密钥类型(私钥、公钥、证书)content- 密钥内容,需为PKCS#1格式keyStream- pem流
-
writePemObject
写出pem密钥(私钥、公钥、证书)- Parameters:
type- 密钥类型(私钥、公钥、证书)content- 密钥内容,需为PKCS#1格式writer- pemWriter
-
readPemObject
读取pem文件中的信息,包括类型、头信息和密钥内容- Parameters:
keyStream- pem流- Returns:
PemObject
-
readPemObject
读取pem文件中的信息,包括类型、头信息和密钥内容- Parameters:
reader- pem Reader- Returns:
PemObject
-
readSm2PemPrivateKey
读取OpenSSL生成的ANS1格式的Pem私钥文件,必须为PKCS#1格式- Parameters:
keyStream- 私钥pem流- Returns:
PrivateKey
-
toPem
将私钥或公钥转换为PEM格式的字符串- Parameters:
type- 密钥类型(私钥、公钥、证书)content- 密钥内容- Returns:
- PEM内容
-
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
-
hashpw
生成Bcrypt加密后的密文- Parameters:
password- 明文密码- Returns:
- 加密后的密文
-
checkpw
验证密码是否与Bcrypt加密后的密文匹配- Parameters:
password- 明文密码hashed- hash值(加密后的值)- Returns:
- 是否匹配
-
changeC1C2C3ToC1C3C2
public static byte[] changeC1C2C3ToC1C3C2(byte[] c1c2c3, org.bouncycastle.crypto.params.ECDomainParameters ecDomainParameters) bc加解密使用旧标c1||c2||c3,此方法在加密后调用,将结果转化为c1||c3||c2- Parameters:
c1c2c3- 加密后的bytes,顺序为C1C2C3ecDomainParameters-ECDomainParameters- Returns:
- 加密后的bytes, 顺序为C1C3C2
-
changeC1C3C2ToC1C2C3
public static byte[] changeC1C3C2ToC1C2C3(byte[] c1c3c2, org.bouncycastle.crypto.params.ECDomainParameters ecDomainParameters) bc加解密使用旧标c1||c3||c2,此方法在解密前调用,将密文转化为c1||c2||c3再去解密- Parameters:
c1c3c2- 加密后的bytes,顺序为C1C3C2ecDomainParameters-ECDomainParameters- Returns:
- c1c2c3 加密后的bytes,顺序为C1C2C3
-
rsAsn1ToPlain
public static byte[] rsAsn1ToPlain(byte[] rsDer) BC的SM3withSM2签名得到的结果的rs是asn1格式的,这个方法转化成直接拼接r||s- Parameters:
rsDer- rs in asn1 format- Returns:
- sign result in plain byte array
-
rsPlainToAsn1
public static byte[] rsPlainToAsn1(byte[] sign) BC的SM3withSM2验签需要的rs是asn1格式的,这个方法将直接拼接r||s的字节数组转化成asn1格式- Parameters:
sign- 字节数组- Returns:
- Rs结果为asn1格式
-
createHmacSm3Engine
创建HmacSM3算法的MacEngine- Parameters:
key- 密钥- Returns:
MacEngine
-
addProvider
增加加密解密的算法提供者,默认优先使用,例如:addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
- Parameters:
provider- 算法提供者
-
createCipher
创建Cipher- Parameters:
algorithm- 算法- Returns:
Cipher
-
createMessageDigest
- Parameters:
algorithm- 算法- Returns:
MessageDigest
-
createMac
创建Mac- Parameters:
algorithm- 算法- Returns:
Mac
-
createSignature
- Parameters:
algorithm- 算法- Returns:
Signature
-