Package org.miaixz.bus.crypto
Class Builder
java.lang.Object
org.miaixz.bus.crypto.Builder
安全相关工具类
加密分为三种:
1、对称加密(symmetric),例如:AES、DES等
2、非对称加密(asymmetric),例如:RSA、DSA等
3、摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Field Summary
Fields -
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) static MaccreateHmacSm3Engine(byte[] key) 创建HmacSM3算法的Macstatic MessageDigestcreateJdkMessageDigest(String algorithm) 创建MessageDigest,使用JDK默认的Providerstatic KeySpeccreateKeySpec(String algorithm, byte[] key) static Mac创建Macstatic MessageDigestcreateMessageDigest(String algorithm, Provider provider) static PBEKeySpeccreatePBEKeySpec(char[] password) 创建PBEKeySpecPBE算法没有密钥的概念,密钥在其它对称加密算法中是经过算法计算得出来的,PBE算法则是使用口令替代了密钥。static PBEParameterSpeccreatePBEParameterSpec(byte[] salt, int iterationCount) static SignaturecreateSignature(String algorithm) 创建Signature签名对象static SignaturecreateSignature(org.miaixz.bus.core.lang.Algorithm asymmetricAlgorithm, org.miaixz.bus.core.lang.Algorithm digestAlgorithm) 生成签名对象,仅用于非对称加密static byte[]解码字符串密钥,可支持的编码如下:static byte[]数据解密static InputStreamdecrypt(String algorithm, String key, InputStream inputStream) 数据解密static String数据解密static DESdes()DES加密,生成随机KEY。注意解密时必须使用相同DES对象或者使用相同KEY 例:static DESdes(byte[] key) DES加密 例:static Digester新建摘要器static Digesterdigester(org.miaixz.bus.core.lang.Algorithm algorithm) 新建摘要器static void强制关闭自定义Provider的使用,如Bouncy Castle库,全局有效static byte[]数据加密static InputStreamencrypt(String algorithm, String key, InputStream inputStream) 数据加密static String数据加密static FPEfpe(FPE.FPEMode mode, byte[] key, org.bouncycastle.crypto.AlphabetMapper mapper, byte[] tweak) FPE(Format Preserving Encryption)实现,支持FF1和FF3-1模式。static StringgenerateAlgorithm(org.miaixz.bus.core.lang.Algorithm asymmetricAlgorithm, org.miaixz.bus.core.lang.Algorithm digestAlgorithm) 生成算法,格式为XXXwithXXXstatic String生成Bcrypt加密后的密文static HMachmac(org.miaixz.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(data).digest(data) HmacMD5加密并转为16进制字符串:hmacMd5(data).digestHex(data)static HMacHmacMD5加密器 例: HmacMD5加密:hmacMd5(data).digest(data) HmacMD5加密并转为16进制字符串:hmacMd5(data).digestHex(data)static HMachmacSha1()HmacSHA1加密器,生成随机KEY 例: HmacSHA1加密:hmacSha1().digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1().digestHex(data)static HMachmacSha1(byte[] key) HmacSHA1加密器 例: HmacSHA1加密:hmacSha1(data).digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1(data).digestHex(data)static HMacHmacSHA1加密器 例: HmacSHA1加密:hmacSha1(data).digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1(data).digestHex(data)static HMacHmacSHA256加密器,生成随机KEY 例: HmacSHA256加密:hmacSha256().digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256().digestHex(data)static HMachmacSha256(byte[] key) HmacSHA256加密器 例: HmacSHA256加密:hmacSha256(data).digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256(data).digestHex(data)static HMachmacSha256(String key) HmacSHA256加密器 例: HmacSHA256加密:hmacSha256(data).digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256(data).digestHex(data)static HMachmacSm3(byte[] key) HmacSM3算法实现static MD5md5()MD5加密 例:static byte[]md5(byte[] data) 计算32位MD5摘要值static StringMD5加密文件,生成16进制MD5字符串static Stringmd5(InputStream data) MD5加密,生成16进制MD5字符串static StringMD5加密,生成16进制MD5字符串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 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 Stringpbkdf2(char[] password, byte[] salt) PBKDF2加密密码static Cryptorc4(byte[] key) RC4算法static 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 StringSHA1加密文件,生成16进制SHA1字符串static Stringsha1(InputStream data) SHA1加密,生成16进制SHA1字符串static StringSHA1加密,生成16进制SHA1字符串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 StringSHA256加密文件,生成16进制SHA256字符串static Stringsha256(InputStream data) SHA256加密,生成16进制SHA256字符串static StringSHA256加密,生成16进制SHA256字符串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.miaixz.bus.core.lang.Algorithm algorithm) 创建签名算法对象 生成新的私钥公钥对static Signsign(org.miaixz.bus.core.lang.Algorithm algorithm, byte[] privateKey, byte[] publicKey) 创建Sign算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证static Sign创建签名算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证static StringsignParams(org.miaixz.bus.core.lang.Algorithm digestAlgorithm, Map<?, ?> params, String... otherParams) 对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值static StringsignParams(org.miaixz.bus.core.lang.Algorithm digestAlgorithm, Map<?, ?> params, String separator, String keyValueSeparator, boolean isIgnoreNull, String... otherParams) 对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串static StringsignParams(Crypto crypto, Map<?, ?> params, String... otherParams) 对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值static StringsignParams(Crypto crypto, Map<?, ?> params, String separator, String keyValueSeparator, boolean isIgnoreNull, String... otherParams) 对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串static StringsignParamsMd5(Map<?, ?> params, String... otherParams) 对参数做md5签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值static StringsignParamsSha1(Map<?, ?> params, String... otherParams) 对参数做Sha1签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值static StringsignParamsSha256(Map<?, ?> params, String... otherParams) 对参数做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 StringSM3加密文件,生成16进制SM3字符串static Stringsm3(InputStream data) SM3加密,生成16进制SM3字符串static StringSM3加密,生成16进制SM3字符串static SM3sm3WithSalt(byte[] salt) SM3加密,可以传入盐static SM4sm4()SM4加密,生成随机KEY。注意解密时必须使用相同Crypto对象或者使用相同KEY 例:static SM4sm4(byte[] key) SM4加密 例:static TDEAtdea()三重数据加密算法,缩写为TDEA(又名3DES、TripleDES),生成随机KEY。 注意解密时必须使用相同TDEA对象或者使用相同KEY Java中默认实现为:DESede/ECB/PKCS5Padding 例:static TDEAtdea(byte[] key) 三重数据加密算法,缩写为TDEA(又名3DES、TripleDES),生成随机KEY。 注意解密时必须使用相同TDEA对象或者使用相同KEY Java中默认实现为:DESede/ECB/PKCS5Padding 例: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 byte[]toPkcs1(PrivateKey privateKey) Java中的PKCS#8格式私钥转换为OpenSSL支持的PKCS#1格式static byte[]Java中的X.509格式公钥转换为OpenSSL支持的PKCS#1格式static org.bouncycastle.crypto.BufferedBlockCipherwrap(org.bouncycastle.crypto.BlockCipher cipher, org.miaixz.bus.core.lang.Algorithm.Mode mode, Padding padding) 将BlockCipher包装为指定mode和padding的BufferedBlockCipherstatic ZUCzuc128(byte[] key, byte[] iv) 祖冲之算法集(ZUC-128算法)实现,基于BouncyCastle实现。static ZUCzuc256(byte[] key, byte[] iv) 祖冲之算法集(ZUC-256算法)实现,基于BouncyCastle实现。
-
Field Details
-
SM2_CURVE_NAME
SM2默认曲线- 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标识 -
CRYPTO_DECODE_HEX
自定义系统属性:是否解码Hex字符
-
-
Constructor Details
-
Builder
public Builder()
-
-
Method Details
-
generateAlgorithm
public static String generateAlgorithm(org.miaixz.bus.core.lang.Algorithm asymmetricAlgorithm, org.miaixz.bus.core.lang.Algorithm digestAlgorithm) 生成算法,格式为XXXwithXXX- Parameters:
asymmetricAlgorithm- 非对称算法digestAlgorithm- 摘要算法- Returns:
- 算法
-
aes
AES加密,生成随机KEY。注意解密时必须使用相同AES对象或者使用相同KEY 例:AES加密:aes().encrypt(data) AES解密:aes().decrypt(data)
- Returns:
AES
-
aes
AES加密 例:AES加密:aes(data).encrypt(data) AES解密:aes(data).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(data).encrypt(data) DES解密:des(data).decrypt(data)
- Parameters:
key- 密钥- Returns:
DES
-
tdea
三重数据加密算法,缩写为TDEA(又名3DES、TripleDES),生成随机KEY。 注意解密时必须使用相同TDEA对象或者使用相同KEY Java中默认实现为:DESede/ECB/PKCS5Padding 例:DESede加密:tdea().encrypt(data) DESede解密:tdea().decrypt(data)
- Returns:
TDEA
-
tdea
三重数据加密算法,缩写为TDEA(又名3DES、TripleDES),生成随机KEY。 注意解密时必须使用相同TDEA对象或者使用相同KEY Java中默认实现为:DESede/ECB/PKCS5Padding 例:DESede加密:tdea(data).encrypt(data) DESede解密:tdea(data).decrypt(data)
- Parameters:
key- 密钥- Returns:
TDEA
-
md5
MD5加密 例:MD5加密:md5().digest(data) MD5加密并转为16进制字符串:md5().digestHex(data)
- Returns:
Digester
-
md5
MD5加密,生成16进制MD5字符串- Parameters:
data- 数据- Returns:
- MD5字符串
-
md5
MD5加密,生成16进制MD5字符串- Parameters:
data- 数据- Returns:
- MD5字符串
-
md5
MD5加密文件,生成16进制MD5字符串- Parameters:
dataFile- 被加密文件- Returns:
- MD5字符串
-
sha1
SHA1加密 例: SHA1加密:sha1().digest(data) SHA1加密并转为16进制字符串:sha1().digestHex(data)- Returns:
Digester
-
sha1
SHA1加密,生成16进制SHA1字符串- Parameters:
data- 数据- Returns:
- SHA1字符串
-
sha1
SHA1加密,生成16进制SHA1字符串- Parameters:
data- 数据- Returns:
- SHA1字符串
-
sha1
SHA1加密文件,生成16进制SHA1字符串- Parameters:
dataFile- 被加密文件- Returns:
- SHA1字符串
-
sha256
SHA256加密 例: SHA256加密:sha256().digest(data) SHA256加密并转为16进制字符串:sha256().digestHex(data)- Returns:
Digester
-
sha256
SHA256加密,生成16进制SHA256字符串- Parameters:
data- 数据- Returns:
- SHA256字符串
-
sha256
SHA256加密,生成16进制SHA256字符串- Parameters:
data- 数据- Returns:
- SHA1字符串
-
sha256
SHA256加密文件,生成16进制SHA256字符串- Parameters:
dataFile- 被加密文件- Returns:
- SHA256字符串
-
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(data).digest(data) HmacMD5加密并转为16进制字符串:hmacMd5(data).digestHex(data)- Parameters:
key- 加密密钥,如果为null生成随机密钥- Returns:
HMac
-
hmacMd5
HmacMD5加密器 例: HmacMD5加密:hmacMd5(data).digest(data) HmacMD5加密并转为16进制字符串:hmacMd5(data).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(data).digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1(data).digestHex(data)- Parameters:
key- 加密密钥,如果为null生成随机密钥- Returns:
HMac
-
hmacSha1
HmacSHA1加密器 例: HmacSHA1加密:hmacSha1(data).digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1(data).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(data).digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256(data).digestHex(data)- Parameters:
key- 加密密钥,如果为null生成随机密钥- Returns:
HMac
-
hmacSha256
HmacSHA256加密器 例: HmacSHA256加密:hmacSha256(data).digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256(data).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:
privateKeyBase64- 私钥Base64publicKeyBase64- 公钥Base64- Returns:
RSA
-
rsa
创建RSA算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密- Parameters:
privateKey- 私钥publicKey- 公钥- Returns:
RSA
-
addProvider
增加加密解密的算法提供者,默认优先使用,例如:addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
- Parameters:
provider- 算法提供者
-
decode
解码字符串密钥,可支持的编码如下:1. Hex(16进制)编码 1. Base64编码
- Parameters:
key- 被解码的密钥字符串- Returns:
- 密钥
-
createCipher
- Parameters:
algorithm- 算法- Returns:
Cipher
-
createMessageDigest
- Parameters:
algorithm- 算法provider- 算法提供方,null表示使用Holder找到的提供方。- Returns:
MessageDigest
-
createJdkMessageDigest
创建MessageDigest,使用JDK默认的Provider- Parameters:
algorithm- 算法- Returns:
MessageDigest
-
createMac
创建Mac- Parameters:
algorithm- 算法- Returns:
Mac
-
rc4
RC4算法- Parameters:
key- 密钥- Returns:
Crypto
-
disableCustomProvider
public static void disableCustomProvider()强制关闭自定义Provider的使用,如Bouncy Castle库,全局有效 -
pbkdf2
PBKDF2加密密码- Parameters:
password- 密码salt- 盐- Returns:
- 盐,一般为16位
-
fpe
public static FPE fpe(FPE.FPEMode mode, byte[] key, org.bouncycastle.crypto.AlphabetMapper mapper, byte[] tweak) FPE(Format Preserving Encryption)实现,支持FF1和FF3-1模式。- Parameters:
mode- FPE模式枚举,可选FF1或FF3-1key- 密钥,null表示随机密钥,长度必须是16bit、24bit或32bitmapper- Alphabet字典映射,被加密的字符范围和这个映射必须一致,例如手机号、银行卡号等字段可以采用数字字母字典表tweak- Tweak是为了解决因局部加密而导致结果冲突问题,通常情况下将数据的不可变部分作为Tweak- Returns:
FPE
-
zuc128
祖冲之算法集(ZUC-128算法)实现,基于BouncyCastle实现。- Parameters:
key- 密钥iv- 加盐,长度16bytes,null是随机加盐- Returns:
ZUC
-
zuc256
祖冲之算法集(ZUC-256算法)实现,基于BouncyCastle实现。- Parameters:
key- 密钥iv- 加盐,长度25bytes,null是随机加盐- Returns:
ZUC
-
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
-
sm3WithSalt
SM3加密,可以传入盐- Parameters:
salt- 加密盐- Returns:
SM3
-
sm3
SM3加密,生成16进制SM3字符串- Parameters:
data- 数据- Returns:
- SM3字符串
-
sm3
SM3加密,生成16进制SM3字符串- Parameters:
data- 数据- Returns:
- SM3字符串
-
sm3
SM3加密文件,生成16进制SM3字符串- Parameters:
dataFile- 被加密文件- Returns:
- SM3字符串
-
sm4
SM4加密,生成随机KEY。注意解密时必须使用相同Crypto对象或者使用相同KEY 例:SM4加密:sm4().encrypt(data) SM4解密:sm4().decrypt(data)
- Returns:
Crypto
-
sm4
SM4加密 例:SM4加密:sm4(data).encrypt(data) SM4解密:sm4(data).decrypt(data)
- Parameters:
key- 密钥- Returns:
SM4
-
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- in plain byte array- Returns:
- rs result in asn1 format
-
createHmacSm3Engine
创建HmacSM3算法的Mac- Parameters:
key- 密钥- Returns:
Mac
-
hmacSm3
HmacSM3算法实现- Parameters:
key- 密钥- Returns:
HMac对象,调用digestXXX即可
-
createSignature
public static Signature createSignature(org.miaixz.bus.core.lang.Algorithm asymmetricAlgorithm, org.miaixz.bus.core.lang.Algorithm digestAlgorithm) 生成签名对象,仅用于非对称加密- Parameters:
asymmetricAlgorithm-Algorithm非对称加密算法digestAlgorithm-Algorithm摘要算法- Returns:
Signature
-
createSignature
创建Signature签名对象- Parameters:
algorithm- 算法- Returns:
Signature
-
sign
创建签名算法对象 生成新的私钥公钥对- Parameters:
algorithm- 签名算法- Returns:
Sign
-
sign
public static Sign sign(org.miaixz.bus.core.lang.Algorithm algorithm, String privateKeyBase64, String publicKeyBase64) 创建签名算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证- Parameters:
algorithm- 签名算法privateKeyBase64- 私钥Base64publicKeyBase64- 公钥Base64- Returns:
Sign
-
sign
public static Sign sign(org.miaixz.bus.core.lang.Algorithm algorithm, byte[] privateKey, byte[] publicKey) 创建Sign算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证- Parameters:
algorithm- 算法枚举privateKey- 私钥publicKey- 公钥- Returns:
Sign
-
signParams
对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值- Parameters:
crypto- 对称加密算法params- 参数otherParams- 其它附加参数字符串(例如密钥)- Returns:
- 签名
-
signParams
public static String signParams(Crypto crypto, Map<?, ?> params, String separator, String keyValueSeparator, boolean isIgnoreNull, String... otherParams) 对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串- Parameters:
crypto- 对称加密算法params- 参数separator- entry之间的连接符keyValueSeparator- kv之间的连接符isIgnoreNull- 是否忽略null的键和值otherParams- 其它附加参数字符串(例如密钥)- Returns:
- 签名
-
signParamsMd5
对参数做md5签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值- Parameters:
params- 参数otherParams- 其它附加参数字符串(例如密钥)- Returns:
- 签名
-
signParamsSha1
对参数做Sha1签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值- Parameters:
params- 参数otherParams- 其它附加参数字符串(例如密钥)- Returns:
- 签名
-
signParamsSha256
对参数做Sha256签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值- Parameters:
params- 参数otherParams- 其它附加参数字符串(例如密钥)- Returns:
- 签名
-
signParams
public static String signParams(org.miaixz.bus.core.lang.Algorithm digestAlgorithm, Map<?, ?> params, String... otherParams) 对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值- Parameters:
digestAlgorithm- 摘要算法params- 参数otherParams- 其它附加参数字符串(例如密钥)- Returns:
- 签名
-
signParams
public static String signParams(org.miaixz.bus.core.lang.Algorithm digestAlgorithm, Map<?, ?> params, String separator, String keyValueSeparator, boolean isIgnoreNull, String... otherParams) 对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串- Parameters:
digestAlgorithm- 摘要算法params- 参数separator- entry之间的连接符keyValueSeparator- kv之间的连接符isIgnoreNull- 是否忽略null的键和值otherParams- 其它附加参数字符串(例如密钥)- Returns:
- 签名
-
md5
public static byte[] md5(byte[] data) 计算32位MD5摘要值- Parameters:
data- 被摘要数据- Returns:
- MD5摘要
-
md5
计算32位MD5摘要值- Parameters:
data- 被摘要数据charset- 编码- 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- 被摘要数据- 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
public static byte[] sha1(byte[] data) 计算SHA-1摘要值- Parameters:
data- 被摘要数据- Returns:
- SHA-1摘要
-
sha1
计算SHA-1摘要值- Parameters:
data- 被摘要数据charset- 编码- 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
public static byte[] sha256(byte[] data) 计算SHA-256摘要值- Parameters:
data- 被摘要数据- 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进制表示
-
sha512
public static byte[] sha512(byte[] data) 计算SHA-512摘要值- Parameters:
data- 被摘要数据- Returns:
- SHA-512摘要
-
sha512
计算SHA-512摘要值- Parameters:
data- 被摘要数据charset- 编码- Returns:
- SHA-512摘要
-
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
-
hashpw
生成Bcrypt加密后的密文- Parameters:
password- 明文密码- Returns:
- 加密后的密文
-
checkpw
验证密码是否与Bcrypt加密后的密文匹配- Parameters:
password- 明文密码hashed- hash值(加密后的值)- 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
-
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格式公钥
-
wrap
public static org.bouncycastle.crypto.BufferedBlockCipher wrap(org.bouncycastle.crypto.BlockCipher cipher, org.miaixz.bus.core.lang.Algorithm.Mode mode, Padding padding) 将BlockCipher包装为指定mode和padding的BufferedBlockCipher- Parameters:
cipher-BlockCiphermode- 模式padding- 补码方式- Returns:
BufferedBlockCipher,无对应Cipher返回null
-
createKeySpec
根据算法创建KeySpec- DESede:
DESedeKeySpec - DES :
DESedeKeySpec - 其它 :
SecretKeySpec
- Parameters:
algorithm- 算法key- 密钥- Returns:
KeySpec
- DESede:
-
createPBEKeySpec
创建PBEKeySpecPBE算法没有密钥的概念,密钥在其它对称加密算法中是经过算法计算得出来的,PBE算法则是使用口令替代了密钥。- Parameters:
password- 口令- Returns:
PBEKeySpec
-
createPBEParameterSpec
- Parameters:
salt- 加盐值iterationCount- 摘要次数- Returns:
PBEParameterSpec
-
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:
- 解密结果
-