public final class CryptoUtils extends Object
| Modifier and Type | Field and Description |
|---|---|
static int |
DEFAULT_KEY_SIZE
默认密钥字节数
|
static String |
KEY_STORE
Java密钥库(Java Key Store,JKS)KEY_STORE
|
static String |
SM2_DEFAULT_CURVE
SM2默认曲线
|
static String |
X509 |
| Constructor and Description |
|---|
CryptoUtils() |
| Modifier and Type | Method and Description |
|---|---|
static void |
addProvider(Provider provider)
增加加密解密的算法提供者,默认优先使用,例如:
|
static AES |
aes()
AES加密,生成随机KEY。注意解密时必须使用相同
AES对象或者使用相同KEY
例: |
static AES |
aes(byte[] key)
AES加密
例:
|
static String |
bcrypt(String password)
生成Bcrypt加密后的密文
|
static boolean |
bcryptCheck(String password,
String hashed)
验证密码是否与Bcrypt加密后的密文匹配
|
static byte[] |
changeC1C2C3ToC1C3C2(byte[] c1c2c3,
org.bouncycastle.crypto.params.ECDomainParameters ecDomainParameters)
bc加解密使用旧标c1||c2||c3,此方法在加密后调用,将结果转化为c1||c3||c2
|
static byte[] |
changeC1C3C2ToC1C2C3(byte[] c1c3c2,
org.bouncycastle.crypto.params.ECDomainParameters ecDomainParameters)
bc加解密使用旧标c1||c3||c2,此方法在解密前调用,将密文转化为c1||c2||c3再去解密
|
static Cipher |
createCipher(String mode)
创建
Cipher |
static MessageDigest |
createMessageDigest(String mode)
|
static byte[] |
decode(String key)
解码字符串密钥,可支持的编码如下:
|
static PublicKey |
decodeECPoint(byte[] encodeByte,
String curveName)
解码恢复EC压缩公钥,支持Base64和Hex编码,(基于BouncyCastle)
|
static PublicKey |
decodeECPoint(String encode,
String curveName)
解码恢复EC压缩公钥,支持Base64和Hex编码,(基于BouncyCastle)
|
static byte[] |
decrypt(String type,
String key,
byte[] content) |
static InputStream |
decrypt(String type,
String key,
InputStream inputStream) |
static String |
decrypt(String type,
String key,
String content,
Charset charset) |
static DES |
des()
DES加密,生成随机KEY。注意解密时必须使用相同
DES对象或者使用相同KEY
例: |
static DES |
des(byte[] key)
DES加密
例:
|
static DESede |
desede()
DESede加密(又名3DES、TripleDES),生成随机KEY。注意解密时必须使用相同
DESede对象或者使用相同KEY
Java中默认实现为:DESede/ECB/PKCS5Padding
例: |
static DESede |
desede(byte[] key)
DESede加密(又名3DES、TripleDES)
Java中默认实现为:DESede/ECB/PKCS5Padding
例:
|
static Digester |
digester(String mode)
新建摘要器
|
static void |
disableBouncyCastle()
强制关闭Bouncy Castle库的使用,全局有效
|
static byte[] |
encodeECPublicKey(PublicKey publicKey)
编码压缩EC公钥(基于BouncyCastle)
|
static byte[] |
encrypt(String type,
String key,
byte[] content) |
static InputStream |
encrypt(String type,
String key,
InputStream inputStream) |
static String |
encrypt(String type,
String key,
String content,
Charset charset) |
static byte[] |
fromHexString(String input) |
static SecretKey |
generateDESKey(String mode,
byte[] key)
生成
SecretKey |
static SecretKey |
generateKey(String mode)
生成
SecretKey,仅用于对称加密和摘要算法密钥生成 |
static SecretKey |
generateKey(String mode,
byte[] key)
生成
SecretKey,仅用于对称加密和摘要算法密钥生成 |
static SecretKey |
generateKey(String mode,
int keySize)
生成
SecretKey,仅用于对称加密和摘要算法密钥生成 |
static SecretKey |
generateKey(String mode,
KeySpec keySpec)
生成
SecretKey,仅用于对称加密和摘要算法 |
static KeyPair |
generateKeyPair(String mode)
生成用于非对称加密的公钥和私钥,仅用于非对称加密
|
static KeyPair |
generateKeyPair(String mode,
AlgorithmParameterSpec params)
生成用于非对称加密的公钥和私钥
|
static KeyPair |
generateKeyPair(String mode,
byte[] seed,
AlgorithmParameterSpec param)
生成用于非对称加密的公钥和私钥
|
static KeyPair |
generateKeyPair(String mode,
int keySize)
生成用于非对称加密的公钥和私钥
|
static KeyPair |
generateKeyPair(String mode,
int keySize,
byte[] seed)
生成用于非对称加密的公钥和私钥
|
static KeyPair |
generateKeyPair(String mode,
int keySize,
byte[] seed,
AlgorithmParameterSpec... params)
生成用于非对称加密的公钥和私钥
|
static SecretKey |
generatePBEKey(String mode,
char[] key)
生成PBE
SecretKey |
static PrivateKey |
generatePrivateKey(KeyStore keyStore,
String alias,
char[] password)
生成私钥,仅用于非对称加密
|
static PrivateKey |
generatePrivateKey(String mode,
byte[] key)
生成私钥,仅用于非对称加密
采用PKCS#8规范,此规范定义了私钥信息语法和加密私钥语法
|
static PrivateKey |
generatePrivateKey(String mode,
KeySpec keySpec)
生成私钥,仅用于非对称加密
|
static PublicKey |
generatePublicKey(String mode,
byte[] key)
生成公钥,仅用于非对称加密
采用X509证书规范
|
static PublicKey |
generatePublicKey(String mode,
KeySpec keySpec)
生成公钥,仅用于非对称加密
|
static PrivateKey |
generateRSAPrivateKey(byte[] key)
生成RSA私钥,仅用于非对称加密
采用PKCS#8规范,此规范定义了私钥信息语法和加密私钥语法
|
static PublicKey |
generateRSAPublicKey(byte[] key)
生成RSA公钥,仅用于非对称加密
采用X509证书规范
|
static String |
getAlgorithmAfterWith(String mode)
获取用于密钥生成的算法
获取XXXwithXXX算法的后半部分算法,如果为ECDSA或SM2,返回算法为EC
|
static Certificate |
getCertificate(KeyStore keyStore,
String alias)
获得 Certification
|
static CertificateFactory |
getCertificateFactory(String type)
|
static int |
getDec(int index) |
static byte |
getHex(int index) |
static KeyFactory |
getKeyFactory(String mode)
|
static KeyGenerator |
getKeyGenerator(String mode)
|
static KeyPair |
getKeyPair(KeyStore keyStore,
char[] password,
String alias)
从KeyStore中获取私钥公钥
|
static KeyPair |
getKeyPair(String type,
InputStream in,
char[] password,
String alias)
从KeyStore中获取私钥公钥
|
static KeyPairGenerator |
getKeyPairGenerator(String mode)
|
static String |
getMainAlgorithm(String mode)
获取主体算法名,例如RSA/ECB/PKCS1Padding的主体算法是RSA
|
static SecretKeyFactory |
getSecretKeyFactory(String mode)
|
static HMac |
hmac(String mode,
byte[] key)
创建HMac对象,调用digest方法可获得hmac值
|
static HMac |
hmac(String mode,
SecretKey key)
创建HMac对象,调用digest方法可获得hmac值
|
static HMac |
hmac(String mode,
String key)
创建HMac对象,调用digest方法可获得hmac值
|
static HMac |
hmacMd5()
HmacMD5加密器,生成随机KEY
例:
HmacMD5加密:hmacMd5().digest(data)
HmacMD5加密并转为16进制字符串:hmacMd5().digestHex(data)
|
static HMac |
hmacMd5(byte[] key)
HmacMD5加密器
例:
HmacMD5加密:hmacMd5(key).digest(data)
HmacMD5加密并转为16进制字符串:hmacMd5(key).digestHex(data)
|
static HMac |
hmacMd5(String key)
HmacMD5加密器
例:
HmacMD5加密:hmacMd5(key).digest(data)
HmacMD5加密并转为16进制字符串:hmacMd5(key).digestHex(data)
|
static HMac |
hmacSha1()
HmacSHA1加密器,生成随机KEY
例:
HmacSHA1加密:hmacSha1().digest(data)
HmacSHA1加密并转为16进制字符串:hmacSha1().digestHex(data)
|
static HMac |
hmacSha1(byte[] key)
HmacSHA1加密器
例:
HmacSHA1加密:hmacSha1(key).digest(data)
HmacSHA1加密并转为16进制字符串:hmacSha1(key).digestHex(data)
|
static HMac |
hmacSha1(String key)
HmacSHA1加密器
例:
HmacSHA1加密:hmacSha1(key).digest(data)
HmacSHA1加密并转为16进制字符串:hmacSha1(key).digestHex(data)
|
static MD5 |
md5()
MD5加密
例:
|
static byte[] |
md5(byte[] data)
计算16位MD5摘要值
|
static String |
md5(File dataFile)
MD5加密文件,生成16进制MD5字符串
|
static String |
md5(InputStream data)
MD5加密,生成16进制MD5字符串
|
static String |
md5(String data)
MD5加密,生成16进制MD5字符串
|
static byte[] |
md5(String data,
String charset)
计算16位MD5摘要值
|
static String |
md5Hex(byte[] data)
计算16位MD5摘要值,并转为16进制字符串
|
static String |
md5Hex(File file)
计算16位MD5摘要值,并转为16进制字符串
|
static String |
md5Hex(InputStream data)
计算16位MD5摘要值,并转为16进制字符串
|
static String |
md5Hex(String data)
计算16位MD5摘要值,并转为16进制字符串
|
static String |
md5Hex(String data,
String charset)
计算16位MD5摘要值,并转为16进制字符串
|
static String |
md5HexTo16(String md5Hex)
32位MD5转16位MD5
|
static RC4 |
rc4(String key)
RC4算法
|
static Certificate |
readCertificate(String type,
InputStream in)
读取Certification文件
Certification为证书文件
see: http://snowolf.iteye.com/blog/391931
|
static Certificate |
readCertificate(String type,
InputStream in,
char[] password,
String alias)
读取Certification文件
Certification为证书文件
|
static KeyStore |
readJKSKeyStore(InputStream in,
char[] password)
读取密钥库(Java Key Store,JKS) KeyStore文件
KeyStore文件用于数字证书的密钥对保存
|
static Key |
readKey(InputStream keyStream)
从pem文件中读取公钥或私钥
根据类型返回
PublicKey 或者 PrivateKey |
static byte[] |
readKeyBytes(InputStream keyStream)
从pem文件中读取公钥或私钥
|
static KeyStore |
readKeyStore(String type,
InputStream in,
char[] password)
读取KeyStore文件
KeyStore文件用于数字证书的密钥对保存
|
static org.bouncycastle.util.io.pem.PemObject |
readPemObject(InputStream keyStream)
读取pem文件中的信息,包括类型、头信息和密钥内容
|
static PrivateKey |
readPrivateKey(InputStream pemStream)
读取PEM格式的私钥
|
static PublicKey |
readPublicKey(InputStream pemStream)
读取PEM格式的公钥
|
static PublicKey |
readPublicKeyFromCert(InputStream in)
读取X.509 Certification文件中的公钥
Certification为证书文件
|
static Certificate |
readX509Certificate(InputStream in)
读取X.509 Certification文件
Certification为证书文件
|
static Certificate |
readX509Certificate(InputStream in,
char[] password,
String alias)
读取X.509 Certification文件
Certification为证书文件
|
static RSA |
rsa()
创建RSA算法对象
生成新的私钥公钥对
|
static RSA |
rsa(byte[] privateKey,
byte[] publicKey)
创建RSA算法对象
私钥和公钥同时为空时生成一对新的私钥和公钥
私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
|
static RSA |
rsa(String privateKeyBase64,
String publicKeyBase64)
创建RSA算法对象
私钥和公钥同时为空时生成一对新的私钥和公钥
私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
|
static byte[] |
rsAsn1ToPlain(byte[] rsDer)
BC的SM3withSM2签名得到的结果的rs是asn1格式的,这个方法转化成直接拼接r||s
|
static byte[] |
rsPlainToAsn1(byte[] sign)
BC的SM3withSM2验签需要的rs是asn1格式的,这个方法将直接拼接r||s的字节数组转化成asn1格式
|
static Digester |
sha1()
SHA1加密
例:
SHA1加密:sha1().digest(data)
SHA1加密并转为16进制字符串:sha1().digestHex(data)
|
static byte[] |
sha1(byte[] data)
计算SHA-1摘要值
|
static String |
sha1(File dataFile)
SHA1加密文件,生成16进制SHA1字符串
|
static String |
sha1(InputStream data)
SHA1加密,生成16进制SHA1字符串
|
static String |
sha1(String data)
SHA1加密,生成16进制SHA1字符串
|
static byte[] |
sha1(String data,
String charset)
计算SHA-1摘要值
|
static String |
sha1Hex(byte[] data)
计算SHA-1摘要值,并转为16进制字符串
|
static String |
sha1Hex(File file)
计算SHA-1摘要值,并转为16进制字符串
|
static String |
sha1Hex(InputStream data)
计算SHA-1摘要值,并转为16进制字符串
|
static String |
sha1Hex(String data)
计算SHA-1摘要值,并转为16进制字符串
|
static String |
sha1Hex(String data,
String charset)
计算SHA-1摘要值,并转为16进制字符串
|
static Digester |
sha256()
SHA256加密
例:
SHA256加密:sha256().digest(data)
SHA256加密并转为16进制字符串:sha256().digestHex(data)
|
static byte[] |
sha256(byte[] data)
计算SHA-256摘要值
|
static String |
sha256(File dataFile)
SHA256加密文件,生成16进制SHA256字符串
|
static String |
sha256(InputStream data)
SHA256加密,生成16进制SHA256字符串
|
static String |
sha256(String data)
SHA256加密,生成16进制SHA256字符串
|
static byte[] |
sha256(String data,
String charset)
计算SHA-256摘要值
|
static String |
sha256Hex(byte[] data)
计算SHA-1摘要值,并转为16进制字符串
|
static String |
sha256Hex(File file)
计算SHA-256摘要值,并转为16进制字符串
|
static String |
sha256Hex(InputStream data)
计算SHA-256摘要值,并转为16进制字符串
|
static String |
sha256Hex(String data)
计算SHA-256摘要值,并转为16进制字符串
|
static String |
sha256Hex(String data,
String charset)
计算SHA-256摘要值,并转为16进制字符串
|
static Sign |
sign(String mode)
创建签名算法对象
生成新的私钥公钥对
|
static Sign |
sign(String mode,
byte[] privateKey,
byte[] publicKey)
创建Sign算法对象
私钥和公钥同时为空时生成一对新的私钥和公钥
私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
|
static Sign |
sign(String mode,
String privateKeyBase64,
String publicKeyBase64)
创建签名算法对象
私钥和公钥同时为空时生成一对新的私钥和公钥
私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
|
static String |
signParams(String Mode,
Map<?,?> params)
对参数做签名
参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串
拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
|
static String |
signParams(String Mode,
Map<?,?> params,
String separator,
String keyValueSeparator,
boolean isIgnoreNull)
对参数做签名
参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串
|
static String |
signParams(Symmetric crypto,
Map<?,?> params)
对参数做签名
参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串
拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
|
static String |
signParams(Symmetric crypto,
Map<?,?> params,
String separator,
String keyValueSeparator,
boolean isIgnoreNull)
对参数做签名
参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串
|
static String |
signParamsMd5(Map<?,?> params)
对参数做md5签名
参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串
拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
|
static String |
signParamsSha1(Map<?,?> params)
对参数做Sha1签名
参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串
拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
|
static String |
signParamsSha256(Map<?,?> params)
对参数做Sha256签名
参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串
拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
|
static SM2 |
sm2()
创建SM2算法对象
生成新的私钥公钥对
|
static SM2 |
sm2(byte[] privateKey,
byte[] publicKey)
创建SM2算法对象
私钥和公钥同时为空时生成一对新的私钥和公钥
私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
|
static SM2 |
sm2(String privateKeyStr,
String publicKeyStr)
创建SM2算法对象
私钥和公钥同时为空时生成一对新的私钥和公钥
私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
|
static Digester |
sm3()
SM3加密
例:
SM3加密:sm3().digest(data)
SM3加密并转为16进制字符串:sm3().digestHex(data)
|
static String |
sm3(File dataFile)
SM3加密文件,生成16进制SM3字符串
|
static String |
sm3(InputStream data)
SM3加密,生成16进制SM3字符串
|
static String |
sm3(String data)
SM3加密,生成16进制SM3字符串
|
static Symmetric |
sm4()
SM4加密,生成随机KEY。注意解密时必须使用相同
Symmetric对象或者使用相同KEY
例: |
static Symmetric |
sm4(byte[] key)
SM4加密
例:
|
static String |
toHexString(byte[] bytes) |
public static final String KEY_STORE
public static final String X509
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).
public static final String SM2_DEFAULT_CURVE
Default SM2 curve
public static SecretKey generateKey(String mode)
SecretKey,仅用于对称加密和摘要算法密钥生成mode - 算法,支持PBE算法SecretKeypublic static SecretKey generateKey(String mode, int keySize)
SecretKey,仅用于对称加密和摘要算法密钥生成mode - 算法,支持PBE算法keySize - 密钥长度SecretKeypublic static SecretKey generateKey(String mode, byte[] key)
SecretKey,仅用于对称加密和摘要算法密钥生成mode - 算法key - 密钥,如果为null 自动生成随机密钥SecretKeypublic static SecretKey generateDESKey(String mode, byte[] key)
SecretKeymode - DES算法,包括DES、DESede等key - 密钥SecretKeypublic static SecretKey generatePBEKey(String mode, char[] key)
SecretKeymode - PBE算法,包括:PBEWithMD5AndDES、PBEWithSHA1AndDESede、PBEWithSHA1AndRC2_40等key - 密钥SecretKeypublic static SecretKey generateKey(String mode, KeySpec keySpec)
SecretKey,仅用于对称加密和摘要算法public static PrivateKey generateRSAPrivateKey(byte[] key)
key - 密钥,必须为DER编码存储PrivateKeypublic static PrivateKey generatePrivateKey(String mode, byte[] key)
mode - 算法key - 密钥,必须为DER编码存储PrivateKeypublic static PrivateKey generatePrivateKey(String mode, KeySpec keySpec)
mode - 算法keySpec - KeySpecPrivateKeypublic static PrivateKey generatePrivateKey(KeyStore keyStore, String alias, char[] password)
keyStore - KeyStorealias - 别名password - 密码PrivateKeypublic static PublicKey generateRSAPublicKey(byte[] key)
key - 密钥,必须为DER编码存储PublicKeypublic static PublicKey generatePublicKey(String mode, byte[] key)
mode - 算法key - 密钥,必须为DER编码存储PublicKeypublic static PublicKey generatePublicKey(String mode, KeySpec keySpec)
public static KeyPair generateKeyPair(String mode)
mode - 非对称加密算法KeyPairpublic static KeyPair generateKeyPair(String mode, int keySize)
mode - 非对称加密算法keySize - 密钥模(modulus )长度KeyPairpublic static KeyPair generateKeyPair(String mode, int keySize, byte[] seed)
mode - 非对称加密算法keySize - 密钥模(modulus )长度seed - 种子KeyPairpublic static KeyPair generateKeyPair(String mode, AlgorithmParameterSpec params)
mode - 非对称加密算法params - AlgorithmParameterSpecKeyPairpublic static KeyPair generateKeyPair(String mode, byte[] seed, AlgorithmParameterSpec param)
mode - 非对称加密算法param - AlgorithmParameterSpecseed - 种子KeyPairpublic static KeyPair generateKeyPair(String mode, int keySize, byte[] seed, AlgorithmParameterSpec... params)
mode - 非对称加密算法keySize - 密钥模(modulus )长度seed - 种子params - AlgorithmParameterSpecKeyPairpublic static KeyPairGenerator getKeyPairGenerator(String mode)
mode - 非对称加密算法KeyPairGeneratorpublic static KeyFactory getKeyFactory(String mode)
mode - 非对称加密算法KeyFactorypublic static SecretKeyFactory getSecretKeyFactory(String mode)
mode - 对称加密算法KeyFactorypublic static KeyGenerator getKeyGenerator(String mode)
mode - 对称加密算法KeyGeneratorpublic static String getAlgorithmAfterWith(String mode)
mode - XXXwithXXX算法public static KeyStore readJKSKeyStore(InputStream in, char[] password)
in - InputStream 如果想从文件读取文件password - 密码KeyStorepublic static KeyStore readKeyStore(String type, InputStream in, char[] password)
type - 类型in - InputStream 如果想从文件读取文件password - 密码KeyStorepublic static KeyPair getKeyPair(String type, InputStream in, char[] password, String alias)
type - 类型in - InputStream 如果想从文件读取文件password - 密码alias - 别名KeyPairpublic static KeyPair getKeyPair(KeyStore keyStore, char[] password, String alias)
public static Certificate readX509Certificate(InputStream in, char[] password, String alias)
in - InputStream 如果想从文件读取.cer文件password - 密码alias - 别名KeyStorepublic static PublicKey readPublicKeyFromCert(InputStream in)
in - InputStream 如果想从文件读取文件KeyStorepublic static Certificate readX509Certificate(InputStream in)
in - InputStream 如果想从文件读取文件KeyStorepublic static Certificate readCertificate(String type, InputStream in, char[] password, String alias)
type - 类型,例如X.509in - InputStream 如果想从文件读取.cer文件password - 密码alias - 别名KeyStorepublic static Certificate readCertificate(String type, InputStream in)
type - 类型,例如X.509in - InputStream 如果想从文件读取.cer文件Certificatepublic static Certificate getCertificate(KeyStore keyStore, String alias)
keyStore - KeyStorealias - 别名Certificatepublic static CertificateFactory getCertificateFactory(String type)
type - 类型,例如X.509KeyPairGeneratorpublic static String getMainAlgorithm(String mode)
mode - 模型public static AES aes()
AES对象或者使用相同KEY
例:
AES加密:aes().encrypt(data) AES解密:aes().decrypt(data)
AESpublic static AES aes(byte[] key)
AES加密:aes(key).encrypt(data) AES解密:aes(key).decrypt(data)
key - 密钥Symmetricpublic static DES des()
DES对象或者使用相同KEY
例:
DES加密:des().encrypt(data) DES解密:des().decrypt(data)
DESpublic static DES des(byte[] key)
DES加密:des(key).encrypt(data) DES解密:des(key).decrypt(data)
key - 密钥DESpublic static DESede desede()
DESede对象或者使用相同KEY
Java中默认实现为:DESede/ECB/PKCS5Padding
例:
DESede加密:desede().encrypt(data) DESede解密:desede().decrypt(data)
DESedepublic static DESede desede(byte[] key)
DESede加密:desede(key).encrypt(data) DESede解密:desede(key).decrypt(data)
key - 密钥DESedepublic static MD5 md5()
MD5加密:md5().digest(data) MD5加密并转为16进制字符串:md5().digestHex(data)
Digesterpublic static String md5(InputStream data)
data - 数据public static String md5(File dataFile)
dataFile - 被加密文件public static Digester sha1()
Digesterpublic static String sha1(String data)
data - 数据public static String sha1(InputStream data)
data - 数据public static String sha1(File dataFile)
dataFile - 被加密文件public static Digester sha256()
Digesterpublic static String sha256(String data)
data - 数据public static String sha256(InputStream data)
data - 数据public static String sha256(File dataFile)
dataFile - 被加密文件public static HMac hmacMd5(String key)
key - 加密密钥,如果为null生成随机密钥HMacpublic static HMac hmacMd5(byte[] key)
key - 加密密钥,如果为null生成随机密钥HMacpublic static HMac hmacMd5()
HMacpublic static HMac hmacSha1(String key)
key - 加密密钥,如果为null生成随机密钥HMacpublic static HMac hmacSha1(byte[] key)
key - 加密密钥,如果为null生成随机密钥HMacpublic static HMac hmacSha1()
HMacpublic static RSA rsa(String privateKeyBase64, String publicKeyBase64)
privateKeyBase64 - 私钥Base64publicKeyBase64 - 公钥Base64RSApublic static RSA rsa(byte[] privateKey, byte[] publicKey)
privateKey - 私钥publicKey - 公钥RSApublic static Sign sign(String mode)
mode - 签名算法Signpublic static Sign sign(String mode, String privateKeyBase64, String publicKeyBase64)
mode - 算法privateKeyBase64 - 私钥Base64publicKeyBase64 - 公钥Base64Signpublic static Sign sign(String mode, byte[] privateKey, byte[] publicKey)
mode - 算法privateKey - 私钥publicKey - 公钥Signpublic static String signParams(Symmetric crypto, Map<?,?> params)
crypto - 对称加密算法params - 参数public static String signParams(Symmetric crypto, Map<?,?> params, String separator, String keyValueSeparator, boolean isIgnoreNull)
crypto - 对称加密算法params - 参数separator - entry之间的连接符keyValueSeparator - kv之间的连接符isIgnoreNull - 是否忽略null的键和值public static String signParamsMd5(Map<?,?> params)
params - 参数public static String signParamsSha1(Map<?,?> params)
params - 参数public static String signParamsSha256(Map<?,?> params)
params - 参数public static String signParams(String Mode, Map<?,?> params)
Mode - 算法params - 参数public static String signParams(String Mode, Map<?,?> params, String separator, String keyValueSeparator, boolean isIgnoreNull)
Mode - 算法params - 参数separator - entry之间的连接符keyValueSeparator - kv之间的连接符isIgnoreNull - 是否忽略null的键和值public static void addProvider(Provider provider)
addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
provider - 算法提供者public static byte[] decode(String key)
1. Hex(16进制)编码 1. Base64编码
key - 被解码的密钥字符串public static Cipher createCipher(String mode)
Ciphermode - 算法public static MessageDigest createMessageDigest(String mode)
mode - 算法public static void disableBouncyCastle()
public static byte[] encodeECPublicKey(PublicKey publicKey)
publicKey - PublicKey,必须为org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKeypublic static PublicKey decodeECPoint(String encode, String curveName)
encode - 压缩公钥curveName - EC曲线名public static PublicKey decodeECPoint(byte[] encodeByte, String curveName)
encodeByte - 压缩公钥curveName - EC曲线名public static PrivateKey readPrivateKey(InputStream pemStream)
pemStream - pem流PrivateKeypublic static PublicKey readPublicKey(InputStream pemStream)
pemStream - pem流PublicKeypublic static Key readKey(InputStream keyStream)
PublicKey 或者 PrivateKeykeyStream - pem流Keypublic static byte[] readKeyBytes(InputStream keyStream)
keyStream - pem流public static org.bouncycastle.util.io.pem.PemObject readPemObject(InputStream keyStream)
keyStream - pem流PemObjectpublic static SM2 sm2(String privateKeyStr, String publicKeyStr)
privateKeyStr - 私钥Hex或Base64表示publicKeyStr - 公钥Hex或Base64表示SM2public static SM2 sm2(byte[] privateKey, byte[] publicKey)
privateKey - 私钥publicKey - 公钥SM2public static Digester sm3()
Digesterpublic static String sm3(InputStream data)
data - 数据public static String sm3(File dataFile)
dataFile - 被加密文件public static Symmetric sm4()
Symmetric对象或者使用相同KEY
例:
SM4加密:sm4().encrypt(data) SM4解密:sm4().decrypt(data)
Symmetricpublic static Symmetric sm4(byte[] key)
SM4加密:sm4(key).encrypt(data) SM4解密:sm4(key).decrypt(data)
key - 密钥Symmetricpublic static byte[] changeC1C2C3ToC1C3C2(byte[] c1c2c3,
org.bouncycastle.crypto.params.ECDomainParameters ecDomainParameters)
c1c2c3 - 加密后的bytes,顺序为C1C2C3ecDomainParameters - ECDomainParameterspublic static byte[] changeC1C3C2ToC1C2C3(byte[] c1c3c2,
org.bouncycastle.crypto.params.ECDomainParameters ecDomainParameters)
c1c3c2 - 加密后的bytes,顺序为C1C3C2ecDomainParameters - ECDomainParameterspublic static byte[] rsAsn1ToPlain(byte[] rsDer)
rsDer - rs in asn1 formatpublic static byte[] rsPlainToAsn1(byte[] sign)
sign - in plain byte arraypublic static byte[] md5(byte[] data)
data - 被摘要数据public static byte[] md5(String data, String charset)
data - 被摘要数据charset - 编码public static String md5Hex(byte[] data)
data - 被摘要数据public static String md5Hex(String data, String charset)
data - 被摘要数据charset - 编码public static String md5Hex(String data)
data - 被摘要数据public static String md5Hex(InputStream data)
data - 被摘要数据public static String md5Hex(File file)
file - 被摘要文件public static String md5HexTo16(String md5Hex)
md5Hex - 32位MD5public static byte[] sha1(byte[] data)
data - 被摘要数据public static byte[] sha1(String data, String charset)
data - 被摘要数据charset - 编码public static String sha1Hex(byte[] data)
data - 被摘要数据public static String sha1Hex(String data, String charset)
data - 被摘要数据charset - 编码public static String sha1Hex(String data)
data - 被摘要数据public static String sha1Hex(InputStream data)
data - 被摘要数据public static String sha1Hex(File file)
file - 被摘要文件public static byte[] sha256(byte[] data)
data - 被摘要数据public static byte[] sha256(String data, String charset)
data - 被摘要数据charset - 编码public static String sha256Hex(byte[] data)
data - 被摘要数据public static String sha256Hex(String data, String charset)
data - 被摘要数据charset - 编码public static String sha256Hex(String data)
data - 被摘要数据public static String sha256Hex(InputStream data)
data - 被摘要数据public static String sha256Hex(File file)
file - 被摘要文件public static Digester digester(String mode)
mode - 签名算法public static String bcrypt(String password)
password - 明文密码public static boolean bcryptCheck(String password, String hashed)
password - 明文密码hashed - 密文public static InputStream encrypt(String type, String key, InputStream inputStream)
public static InputStream decrypt(String type, String key, InputStream inputStream)
public static int getDec(int index)
public static byte getHex(int index)
public static String toHexString(byte[] bytes)
public static byte[] fromHexString(String input)
Copyright © 2019. All rights reserved.