mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
fix comment
This commit is contained in:
@@ -30,7 +30,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
|
||||
/**
|
||||
* Bouncy Castle相关工具类封装
|
||||
*
|
||||
*
|
||||
* @author looly
|
||||
* @since 4.5.0
|
||||
*/
|
||||
@@ -38,7 +38,7 @@ public class BCUtil {
|
||||
/**
|
||||
* 编码压缩EC公钥(基于BouncyCastle)<br>
|
||||
* 见:https://www.cnblogs.com/xinzhao/p/8963724.html
|
||||
*
|
||||
*
|
||||
* @param publicKey {@link PublicKey},必须为org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey
|
||||
* @return 压缩得到的X
|
||||
* @since 4.4.4
|
||||
@@ -50,9 +50,10 @@ public class BCUtil {
|
||||
/**
|
||||
* 解码恢复EC压缩公钥,支持Base64和Hex编码,(基于BouncyCastle)<br>
|
||||
* 见:https://www.cnblogs.com/xinzhao/p/8963724.html
|
||||
*
|
||||
* @param encode 压缩公钥
|
||||
*
|
||||
* @param encode 压缩公钥
|
||||
* @param curveName EC曲线名
|
||||
* @return 公钥
|
||||
* @since 4.4.4
|
||||
*/
|
||||
public static PublicKey decodeECPoint(String encode, String curveName) {
|
||||
@@ -62,9 +63,10 @@ public class BCUtil {
|
||||
/**
|
||||
* 解码恢复EC压缩公钥,支持Base64和Hex编码,(基于BouncyCastle)<br>
|
||||
* 见:https://www.cnblogs.com/xinzhao/p/8963724.html
|
||||
*
|
||||
*
|
||||
* @param encodeByte 压缩公钥
|
||||
* @param curveName EC曲线名,例如{@link KeyUtil#SM2_DEFAULT_CURVE}
|
||||
* @param curveName EC曲线名,例如{@link KeyUtil#SM2_DEFAULT_CURVE}
|
||||
* @return 公钥
|
||||
* @since 4.4.4
|
||||
*/
|
||||
public static PublicKey decodeECPoint(byte[] encodeByte, String curveName) {
|
||||
@@ -90,7 +92,7 @@ public class BCUtil {
|
||||
|
||||
/**
|
||||
* 读取PEM格式的私钥
|
||||
*
|
||||
*
|
||||
* @param pemStream pem流
|
||||
* @return {@link PrivateKey}
|
||||
* @since 4.5.2
|
||||
@@ -101,14 +103,14 @@ public class BCUtil {
|
||||
|
||||
/**
|
||||
* 读取PEM格式的公钥
|
||||
*
|
||||
*
|
||||
* @param pemStream pem流
|
||||
* @return {@link PublicKey}
|
||||
* @since 4.5.2
|
||||
*/
|
||||
public static PublicKey readPublicKey(InputStream pemStream) {
|
||||
final Certificate certificate = KeyUtil.readX509Certificate(pemStream);
|
||||
if(null == certificate) {
|
||||
if (null == certificate) {
|
||||
return null;
|
||||
}
|
||||
return certificate.getPublicKey();
|
||||
@@ -117,7 +119,7 @@ public class BCUtil {
|
||||
/**
|
||||
* 从pem文件中读取公钥或私钥<br>
|
||||
* 根据类型返回{@link PublicKey} 或者 {@link PrivateKey}
|
||||
*
|
||||
*
|
||||
* @param keyStream pem流
|
||||
* @return {@link Key}
|
||||
* @since 4.5.2
|
||||
@@ -134,7 +136,7 @@ public class BCUtil {
|
||||
|
||||
/**
|
||||
* 从pem文件中读取公钥或私钥
|
||||
*
|
||||
*
|
||||
* @param keyStream pem流
|
||||
* @return 密钥bytes
|
||||
* @since 4.5.2
|
||||
@@ -149,7 +151,7 @@ public class BCUtil {
|
||||
|
||||
/**
|
||||
* 读取pem文件中的信息,包括类型、头信息和密钥内容
|
||||
*
|
||||
*
|
||||
* @param keyStream pem流
|
||||
* @return {@link PemObject}
|
||||
* @since 4.5.2
|
||||
|
@@ -588,6 +588,7 @@ public class KeyUtil {
|
||||
/**
|
||||
* 获取主体算法名,例如RSA/ECB/PKCS1Padding的主体算法是RSA
|
||||
*
|
||||
* @param algorithm XXXwithXXX算法
|
||||
* @return 主体算法名
|
||||
* @since 4.5.2
|
||||
*/
|
||||
@@ -823,6 +824,7 @@ public class KeyUtil {
|
||||
*
|
||||
* @param encode 压缩公钥
|
||||
* @param curveName EC曲线名
|
||||
* @return 公钥
|
||||
* @since 4.4.4
|
||||
*/
|
||||
public static PublicKey decodeECPoint(String encode, String curveName) {
|
||||
@@ -835,6 +837,7 @@ public class KeyUtil {
|
||||
*
|
||||
* @param encodeByte 压缩公钥
|
||||
* @param curveName EC曲线名
|
||||
* @return 公钥
|
||||
* @since 4.4.4
|
||||
*/
|
||||
public static PublicKey decodeECPoint(byte[] encodeByte, String curveName) {
|
||||
|
@@ -48,15 +48,14 @@ import cn.hutool.crypto.symmetric.SymmetricCrypto;
|
||||
* 1、对称加密(symmetric),例如:AES、DES等<br>
|
||||
* 2、非对称加密(asymmetric),例如:RSA、DSA等<br>
|
||||
* 3、摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等<br>
|
||||
*
|
||||
* @author xiaoleilu, Gsealy
|
||||
*
|
||||
* @author xiaoleilu, Gsealy
|
||||
*/
|
||||
public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 默认密钥字节数
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* RSA/DSA
|
||||
* Default Keysize 1024
|
||||
@@ -67,7 +66,7 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 生成 {@link SecretKey},仅用于对称加密和摘要算法密钥生成
|
||||
*
|
||||
*
|
||||
* @param algorithm 算法,支持PBE算法
|
||||
* @return {@link SecretKey}
|
||||
*/
|
||||
@@ -77,9 +76,9 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 生成 {@link SecretKey},仅用于对称加密和摘要算法密钥生成
|
||||
*
|
||||
*
|
||||
* @param algorithm 算法,支持PBE算法
|
||||
* @param keySize 密钥长度
|
||||
* @param keySize 密钥长度
|
||||
* @return {@link SecretKey}
|
||||
* @since 3.1.2
|
||||
*/
|
||||
@@ -89,9 +88,9 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 生成 {@link SecretKey},仅用于对称加密和摘要算法密钥生成
|
||||
*
|
||||
*
|
||||
* @param algorithm 算法
|
||||
* @param key 密钥,如果为{@code null} 自动生成随机密钥
|
||||
* @param key 密钥,如果为{@code null} 自动生成随机密钥
|
||||
* @return {@link SecretKey}
|
||||
*/
|
||||
public static SecretKey generateKey(String algorithm, byte[] key) {
|
||||
@@ -100,9 +99,9 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 生成 {@link SecretKey}
|
||||
*
|
||||
*
|
||||
* @param algorithm DES算法,包括DES、DESede等
|
||||
* @param key 密钥
|
||||
* @param key 密钥
|
||||
* @return {@link SecretKey}
|
||||
*/
|
||||
public static SecretKey generateDESKey(String algorithm, byte[] key) {
|
||||
@@ -111,9 +110,9 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 生成PBE {@link SecretKey}
|
||||
*
|
||||
*
|
||||
* @param algorithm PBE算法,包括:PBEWithMD5AndDES、PBEWithSHA1AndDESede、PBEWithSHA1AndRC2_40等
|
||||
* @param key 密钥
|
||||
* @param key 密钥
|
||||
* @return {@link SecretKey}
|
||||
*/
|
||||
public static SecretKey generatePBEKey(String algorithm, char[] key) {
|
||||
@@ -122,9 +121,9 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 生成 {@link SecretKey},仅用于对称加密和摘要算法
|
||||
*
|
||||
*
|
||||
* @param algorithm 算法
|
||||
* @param keySpec {@link KeySpec}
|
||||
* @param keySpec {@link KeySpec}
|
||||
* @return {@link SecretKey}
|
||||
*/
|
||||
public static SecretKey generateKey(String algorithm, KeySpec keySpec) {
|
||||
@@ -134,9 +133,9 @@ public final class SecureUtil {
|
||||
/**
|
||||
* 生成私钥,仅用于非对称加密<br>
|
||||
* 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory
|
||||
*
|
||||
*
|
||||
* @param algorithm 算法
|
||||
* @param key 密钥
|
||||
* @param key 密钥
|
||||
* @return 私钥 {@link PrivateKey}
|
||||
*/
|
||||
public static PrivateKey generatePrivateKey(String algorithm, byte[] key) {
|
||||
@@ -146,9 +145,9 @@ public final class SecureUtil {
|
||||
/**
|
||||
* 生成私钥,仅用于非对称加密<br>
|
||||
* 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory
|
||||
*
|
||||
*
|
||||
* @param algorithm 算法
|
||||
* @param keySpec {@link KeySpec}
|
||||
* @param keySpec {@link KeySpec}
|
||||
* @return 私钥 {@link PrivateKey}
|
||||
* @since 3.1.1
|
||||
*/
|
||||
@@ -158,9 +157,9 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 生成私钥,仅用于非对称加密
|
||||
*
|
||||
*
|
||||
* @param keyStore {@link KeyStore}
|
||||
* @param alias 别名
|
||||
* @param alias 别名
|
||||
* @param password 密码
|
||||
* @return 私钥 {@link PrivateKey}
|
||||
*/
|
||||
@@ -171,9 +170,9 @@ public final class SecureUtil {
|
||||
/**
|
||||
* 生成公钥,仅用于非对称加密<br>
|
||||
* 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory
|
||||
*
|
||||
*
|
||||
* @param algorithm 算法
|
||||
* @param key 密钥
|
||||
* @param key 密钥
|
||||
* @return 公钥 {@link PublicKey}
|
||||
*/
|
||||
public static PublicKey generatePublicKey(String algorithm, byte[] key) {
|
||||
@@ -183,9 +182,9 @@ public final class SecureUtil {
|
||||
/**
|
||||
* 生成公钥,仅用于非对称加密<br>
|
||||
* 算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyFactory
|
||||
*
|
||||
*
|
||||
* @param algorithm 算法
|
||||
* @param keySpec {@link KeySpec}
|
||||
* @param keySpec {@link KeySpec}
|
||||
* @return 公钥 {@link PublicKey}
|
||||
* @since 3.1.1
|
||||
*/
|
||||
@@ -196,7 +195,7 @@ public final class SecureUtil {
|
||||
/**
|
||||
* 生成用于非对称加密的公钥和私钥,仅用于非对称加密<br>
|
||||
* 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator
|
||||
*
|
||||
*
|
||||
* @param algorithm 非对称加密算法
|
||||
* @return {@link KeyPair}
|
||||
*/
|
||||
@@ -207,9 +206,9 @@ public final class SecureUtil {
|
||||
/**
|
||||
* 生成用于非对称加密的公钥和私钥<br>
|
||||
* 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator
|
||||
*
|
||||
*
|
||||
* @param algorithm 非对称加密算法
|
||||
* @param keySize 密钥模(modulus )长度
|
||||
* @param keySize 密钥模(modulus )长度
|
||||
* @return {@link KeyPair}
|
||||
*/
|
||||
public static KeyPair generateKeyPair(String algorithm, int keySize) {
|
||||
@@ -219,10 +218,10 @@ public final class SecureUtil {
|
||||
/**
|
||||
* 生成用于非对称加密的公钥和私钥<br>
|
||||
* 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator
|
||||
*
|
||||
*
|
||||
* @param algorithm 非对称加密算法
|
||||
* @param keySize 密钥模(modulus )长度
|
||||
* @param seed 种子
|
||||
* @param keySize 密钥模(modulus )长度
|
||||
* @param seed 种子
|
||||
* @return {@link KeyPair}
|
||||
*/
|
||||
public static KeyPair generateKeyPair(String algorithm, int keySize, byte[] seed) {
|
||||
@@ -232,9 +231,9 @@ public final class SecureUtil {
|
||||
/**
|
||||
* 生成用于非对称加密的公钥和私钥<br>
|
||||
* 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator
|
||||
*
|
||||
*
|
||||
* @param algorithm 非对称加密算法
|
||||
* @param params {@link AlgorithmParameterSpec}
|
||||
* @param params {@link AlgorithmParameterSpec}
|
||||
* @return {@link KeyPair}
|
||||
* @since 4.3.3
|
||||
*/
|
||||
@@ -245,10 +244,10 @@ public final class SecureUtil {
|
||||
/**
|
||||
* 生成用于非对称加密的公钥和私钥<br>
|
||||
* 密钥对生成算法见:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator
|
||||
*
|
||||
*
|
||||
* @param algorithm 非对称加密算法
|
||||
* @param seed 种子
|
||||
* @param params {@link AlgorithmParameterSpec}
|
||||
* @param seed 种子
|
||||
* @param params {@link AlgorithmParameterSpec}
|
||||
* @return {@link KeyPair}
|
||||
* @since 4.3.3
|
||||
*/
|
||||
@@ -259,7 +258,7 @@ public final class SecureUtil {
|
||||
/**
|
||||
* 获取用于密钥生成的算法<br>
|
||||
* 获取XXXwithXXX算法的后半部分算法,如果为ECDSA或SM2,返回算法为EC
|
||||
*
|
||||
*
|
||||
* @param algorithm XXXwithXXX算法
|
||||
* @return 算法
|
||||
*/
|
||||
@@ -269,9 +268,9 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 生成算法,格式为XXXwithXXX
|
||||
*
|
||||
*
|
||||
* @param asymmetricAlgorithm 非对称算法
|
||||
* @param digestAlgorithm 摘要算法
|
||||
* @param digestAlgorithm 摘要算法
|
||||
* @return 算法
|
||||
* @since 4.4.1
|
||||
*/
|
||||
@@ -282,9 +281,9 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 生成签名对象,仅用于非对称加密
|
||||
*
|
||||
*
|
||||
* @param asymmetricAlgorithm {@link AsymmetricAlgorithm} 非对称加密算法
|
||||
* @param digestAlgorithm {@link DigestAlgorithm} 摘要算法
|
||||
* @param digestAlgorithm {@link DigestAlgorithm} 摘要算法
|
||||
* @return {@link Signature}
|
||||
*/
|
||||
public static Signature generateSignature(AsymmetricAlgorithm asymmetricAlgorithm, DigestAlgorithm digestAlgorithm) {
|
||||
@@ -299,8 +298,8 @@ public final class SecureUtil {
|
||||
* 读取密钥库(Java Key Store,JKS) KeyStore文件<br>
|
||||
* KeyStore文件用于数字证书的密钥对保存<br>
|
||||
* see: http://snowolf.iteye.com/blog/391931
|
||||
*
|
||||
* @param in {@link InputStream} 如果想从文件读取.keystore文件,使用 {@link FileUtil#getInputStream(java.io.File)} 读取
|
||||
*
|
||||
* @param in {@link InputStream} 如果想从文件读取.keystore文件,使用 {@link FileUtil#getInputStream(java.io.File)} 读取
|
||||
* @param password 密码
|
||||
* @return {@link KeyStore}
|
||||
*/
|
||||
@@ -312,9 +311,9 @@ public final class SecureUtil {
|
||||
* 读取KeyStore文件<br>
|
||||
* KeyStore文件用于数字证书的密钥对保存<br>
|
||||
* see: http://snowolf.iteye.com/blog/391931
|
||||
*
|
||||
* @param type 类型
|
||||
* @param in {@link InputStream} 如果想从文件读取.keystore文件,使用 {@link FileUtil#getInputStream(java.io.File)} 读取
|
||||
*
|
||||
* @param type 类型
|
||||
* @param in {@link InputStream} 如果想从文件读取.keystore文件,使用 {@link FileUtil#getInputStream(java.io.File)} 读取
|
||||
* @param password 密码
|
||||
* @return {@link KeyStore}
|
||||
*/
|
||||
@@ -326,10 +325,10 @@ public final class SecureUtil {
|
||||
* 读取X.509 Certification文件<br>
|
||||
* Certification为证书文件<br>
|
||||
* see: http://snowolf.iteye.com/blog/391931
|
||||
*
|
||||
* @param in {@link InputStream} 如果想从文件读取.cer文件,使用 {@link FileUtil#getInputStream(java.io.File)} 读取
|
||||
*
|
||||
* @param in {@link InputStream} 如果想从文件读取.cer文件,使用 {@link FileUtil#getInputStream(java.io.File)} 读取
|
||||
* @param password 密码
|
||||
* @param alias 别名
|
||||
* @param alias 别名
|
||||
* @return {@link KeyStore}
|
||||
* @since 4.4.1
|
||||
*/
|
||||
@@ -341,7 +340,7 @@ public final class SecureUtil {
|
||||
* 读取X.509 Certification文件<br>
|
||||
* Certification为证书文件<br>
|
||||
* see: http://snowolf.iteye.com/blog/391931
|
||||
*
|
||||
*
|
||||
* @param in {@link InputStream} 如果想从文件读取.cer文件,使用 {@link FileUtil#getInputStream(java.io.File)} 读取
|
||||
* @return {@link KeyStore}
|
||||
* @since 4.4.1
|
||||
@@ -354,11 +353,11 @@ public final class SecureUtil {
|
||||
* 读取Certification文件<br>
|
||||
* Certification为证书文件<br>
|
||||
* see: http://snowolf.iteye.com/blog/391931
|
||||
*
|
||||
* @param type 类型,例如X.509
|
||||
* @param in {@link InputStream} 如果想从文件读取.cer文件,使用 {@link FileUtil#getInputStream(java.io.File)} 读取
|
||||
*
|
||||
* @param type 类型,例如X.509
|
||||
* @param in {@link InputStream} 如果想从文件读取.cer文件,使用 {@link FileUtil#getInputStream(java.io.File)} 读取
|
||||
* @param password 密码
|
||||
* @param alias 别名
|
||||
* @param alias 别名
|
||||
* @return {@link KeyStore}
|
||||
* @since 4.4.1
|
||||
*/
|
||||
@@ -370,9 +369,9 @@ public final class SecureUtil {
|
||||
* 读取Certification文件<br>
|
||||
* Certification为证书文件<br>
|
||||
* see: http://snowolf.iteye.com/blog/391931
|
||||
*
|
||||
*
|
||||
* @param type 类型,例如X.509
|
||||
* @param in {@link InputStream} 如果想从文件读取.cer文件,使用 {@link FileUtil#getInputStream(java.io.File)} 读取
|
||||
* @param in {@link InputStream} 如果想从文件读取.cer文件,使用 {@link FileUtil#getInputStream(java.io.File)} 读取
|
||||
* @return {@link Certificate}
|
||||
*/
|
||||
public static Certificate readCertificate(String type, InputStream in) {
|
||||
@@ -381,9 +380,9 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 获得 Certification
|
||||
*
|
||||
*
|
||||
* @param keyStore {@link KeyStore}
|
||||
* @param alias 别名
|
||||
* @param alias 别名
|
||||
* @return {@link Certificate}
|
||||
*/
|
||||
public static Certificate getCertificate(KeyStore keyStore, String alias) {
|
||||
@@ -395,12 +394,12 @@ public final class SecureUtil {
|
||||
/**
|
||||
* AES加密,生成随机KEY。注意解密时必须使用相同 {@link AES}对象或者使用相同KEY<br>
|
||||
* 例:
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* AES加密:aes().encrypt(data)
|
||||
* AES解密:aes().decrypt(data)
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* @return {@link AES}
|
||||
*/
|
||||
public static AES aes() {
|
||||
@@ -410,12 +409,12 @@ public final class SecureUtil {
|
||||
/**
|
||||
* AES加密<br>
|
||||
* 例:
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* AES加密:aes(key).encrypt(data)
|
||||
* AES解密:aes(key).decrypt(data)
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* @param key 密钥
|
||||
* @return {@link SymmetricCrypto}
|
||||
*/
|
||||
@@ -426,12 +425,12 @@ public final class SecureUtil {
|
||||
/**
|
||||
* DES加密,生成随机KEY。注意解密时必须使用相同 {@link DES}对象或者使用相同KEY<br>
|
||||
* 例:
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* DES加密:des().encrypt(data)
|
||||
* DES解密:des().decrypt(data)
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* @return {@link DES}
|
||||
*/
|
||||
public static DES des() {
|
||||
@@ -441,12 +440,12 @@ public final class SecureUtil {
|
||||
/**
|
||||
* DES加密<br>
|
||||
* 例:
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* DES加密:des(key).encrypt(data)
|
||||
* DES解密:des(key).decrypt(data)
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* @param key 密钥
|
||||
* @return {@link DES}
|
||||
*/
|
||||
@@ -458,12 +457,12 @@ public final class SecureUtil {
|
||||
* DESede加密(又名3DES、TripleDES),生成随机KEY。注意解密时必须使用相同 {@link DESede}对象或者使用相同KEY<br>
|
||||
* Java中默认实现为:DESede/ECB/PKCS5Padding<br>
|
||||
* 例:
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* DESede加密:desede().encrypt(data)
|
||||
* DESede解密:desede().decrypt(data)
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* @return {@link DESede}
|
||||
* @since 3.3.0
|
||||
*/
|
||||
@@ -475,12 +474,12 @@ public final class SecureUtil {
|
||||
* DESede加密(又名3DES、TripleDES)<br>
|
||||
* Java中默认实现为:DESede/ECB/PKCS5Padding<br>
|
||||
* 例:
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* DESede加密:desede(key).encrypt(data)
|
||||
* DESede解密:desede(key).decrypt(data)
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* @param key 密钥
|
||||
* @return {@link DESede}
|
||||
* @since 3.3.0
|
||||
@@ -490,15 +489,16 @@ public final class SecureUtil {
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------- 摘要算法
|
||||
|
||||
/**
|
||||
* MD5加密<br>
|
||||
* 例:
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* MD5加密:md5().digest(data)
|
||||
* MD5加密并转为16进制字符串:md5().digestHex(data)
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* @return {@link Digester}
|
||||
*/
|
||||
public static MD5 md5() {
|
||||
@@ -507,7 +507,7 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* MD5加密,生成16进制MD5字符串<br>
|
||||
*
|
||||
*
|
||||
* @param data 数据
|
||||
* @return MD5字符串
|
||||
*/
|
||||
@@ -517,7 +517,7 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* MD5加密,生成16进制MD5字符串<br>
|
||||
*
|
||||
*
|
||||
* @param data 数据
|
||||
* @return MD5字符串
|
||||
*/
|
||||
@@ -527,7 +527,7 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* MD5加密文件,生成16进制MD5字符串<br>
|
||||
*
|
||||
*
|
||||
* @param dataFile 被加密文件
|
||||
* @return MD5字符串
|
||||
*/
|
||||
@@ -540,7 +540,7 @@ public final class SecureUtil {
|
||||
* 例:<br>
|
||||
* SHA1加密:sha1().digest(data)<br>
|
||||
* SHA1加密并转为16进制字符串:sha1().digestHex(data)<br>
|
||||
*
|
||||
*
|
||||
* @return {@link Digester}
|
||||
*/
|
||||
public static Digester sha1() {
|
||||
@@ -549,7 +549,7 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* SHA1加密,生成16进制SHA1字符串<br>
|
||||
*
|
||||
*
|
||||
* @param data 数据
|
||||
* @return SHA1字符串
|
||||
*/
|
||||
@@ -559,7 +559,7 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* SHA1加密,生成16进制SHA1字符串<br>
|
||||
*
|
||||
*
|
||||
* @param data 数据
|
||||
* @return SHA1字符串
|
||||
*/
|
||||
@@ -569,7 +569,7 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* SHA1加密文件,生成16进制SHA1字符串<br>
|
||||
*
|
||||
*
|
||||
* @param dataFile 被加密文件
|
||||
* @return SHA1字符串
|
||||
*/
|
||||
@@ -582,7 +582,7 @@ public final class SecureUtil {
|
||||
* 例:<br>
|
||||
* SHA256加密:sha256().digest(data)<br>
|
||||
* SHA256加密并转为16进制字符串:sha256().digestHex(data)<br>
|
||||
*
|
||||
*
|
||||
* @return {@link Digester}
|
||||
* @since 4.3.2
|
||||
*/
|
||||
@@ -592,7 +592,7 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* SHA256加密,生成16进制SHA256字符串<br>
|
||||
*
|
||||
*
|
||||
* @param data 数据
|
||||
* @return SHA256字符串
|
||||
* @since 4.3.2
|
||||
@@ -603,7 +603,7 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* SHA256加密,生成16进制SHA256字符串<br>
|
||||
*
|
||||
*
|
||||
* @param data 数据
|
||||
* @return SHA1字符串
|
||||
* @since 4.3.2
|
||||
@@ -614,7 +614,7 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* SHA256加密文件,生成16进制SHA256字符串<br>
|
||||
*
|
||||
*
|
||||
* @param dataFile 被加密文件
|
||||
* @return SHA256字符串
|
||||
* @since 4.3.2
|
||||
@@ -625,9 +625,9 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 创建HMac对象,调用digest方法可获得hmac值
|
||||
*
|
||||
*
|
||||
* @param algorithm {@link HmacAlgorithm}
|
||||
* @param key 密钥,如果为<code>null</code>生成随机密钥
|
||||
* @param key 密钥,如果为<code>null</code>生成随机密钥
|
||||
* @return {@link HMac}
|
||||
* @since 3.3.0
|
||||
*/
|
||||
@@ -637,9 +637,9 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 创建HMac对象,调用digest方法可获得hmac值
|
||||
*
|
||||
*
|
||||
* @param algorithm {@link HmacAlgorithm}
|
||||
* @param key 密钥,如果为<code>null</code>生成随机密钥
|
||||
* @param key 密钥,如果为<code>null</code>生成随机密钥
|
||||
* @return {@link HMac}
|
||||
* @since 3.0.3
|
||||
*/
|
||||
@@ -649,9 +649,9 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 创建HMac对象,调用digest方法可获得hmac值
|
||||
*
|
||||
*
|
||||
* @param algorithm {@link HmacAlgorithm}
|
||||
* @param key 密钥{@link SecretKey},如果为<code>null</code>生成随机密钥
|
||||
* @param key 密钥{@link SecretKey},如果为<code>null</code>生成随机密钥
|
||||
* @return {@link HMac}
|
||||
* @since 3.0.3
|
||||
*/
|
||||
@@ -664,7 +664,7 @@ public final class SecureUtil {
|
||||
* 例:<br>
|
||||
* HmacMD5加密:hmacMd5(key).digest(data)<br>
|
||||
* HmacMD5加密并转为16进制字符串:hmacMd5(key).digestHex(data)<br>
|
||||
*
|
||||
*
|
||||
* @param key 加密密钥,如果为<code>null</code>生成随机密钥
|
||||
* @return {@link HMac}
|
||||
* @since 3.3.0
|
||||
@@ -678,7 +678,7 @@ public final class SecureUtil {
|
||||
* 例:<br>
|
||||
* HmacMD5加密:hmacMd5(key).digest(data)<br>
|
||||
* HmacMD5加密并转为16进制字符串:hmacMd5(key).digestHex(data)<br>
|
||||
*
|
||||
*
|
||||
* @param key 加密密钥,如果为<code>null</code>生成随机密钥
|
||||
* @return {@link HMac}
|
||||
*/
|
||||
@@ -691,7 +691,7 @@ public final class SecureUtil {
|
||||
* 例:<br>
|
||||
* HmacMD5加密:hmacMd5().digest(data)<br>
|
||||
* HmacMD5加密并转为16进制字符串:hmacMd5().digestHex(data)<br>
|
||||
*
|
||||
*
|
||||
* @return {@link HMac}
|
||||
*/
|
||||
public static HMac hmacMd5() {
|
||||
@@ -703,7 +703,7 @@ public final class SecureUtil {
|
||||
* 例:<br>
|
||||
* HmacSHA1加密:hmacSha1(key).digest(data)<br>
|
||||
* HmacSHA1加密并转为16进制字符串:hmacSha1(key).digestHex(data)<br>
|
||||
*
|
||||
*
|
||||
* @param key 加密密钥,如果为<code>null</code>生成随机密钥
|
||||
* @return {@link HMac}
|
||||
* @since 3.3.0
|
||||
@@ -717,7 +717,7 @@ public final class SecureUtil {
|
||||
* 例:<br>
|
||||
* HmacSHA1加密:hmacSha1(key).digest(data)<br>
|
||||
* HmacSHA1加密并转为16进制字符串:hmacSha1(key).digestHex(data)<br>
|
||||
*
|
||||
*
|
||||
* @param key 加密密钥,如果为<code>null</code>生成随机密钥
|
||||
* @return {@link HMac}
|
||||
*/
|
||||
@@ -730,7 +730,7 @@ public final class SecureUtil {
|
||||
* 例:<br>
|
||||
* HmacSHA1加密:hmacSha1().digest(data)<br>
|
||||
* HmacSHA1加密并转为16进制字符串:hmacSha1().digestHex(data)<br>
|
||||
*
|
||||
*
|
||||
* @return {@link HMac}
|
||||
*/
|
||||
public static HMac hmacSha1() {
|
||||
@@ -742,7 +742,7 @@ public final class SecureUtil {
|
||||
/**
|
||||
* 创建RSA算法对象<br>
|
||||
* 生成新的私钥公钥对
|
||||
*
|
||||
*
|
||||
* @return {@link RSA}
|
||||
* @since 3.0.5
|
||||
*/
|
||||
@@ -754,9 +754,9 @@ public final class SecureUtil {
|
||||
* 创建RSA算法对象<br>
|
||||
* 私钥和公钥同时为空时生成一对新的私钥和公钥<br>
|
||||
* 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
|
||||
*
|
||||
*
|
||||
* @param privateKeyBase64 私钥Base64
|
||||
* @param publicKeyBase64 公钥Base64
|
||||
* @param publicKeyBase64 公钥Base64
|
||||
* @return {@link RSA}
|
||||
* @since 3.0.5
|
||||
*/
|
||||
@@ -768,9 +768,9 @@ public final class SecureUtil {
|
||||
* 创建RSA算法对象<br>
|
||||
* 私钥和公钥同时为空时生成一对新的私钥和公钥<br>
|
||||
* 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
|
||||
*
|
||||
*
|
||||
* @param privateKey 私钥
|
||||
* @param publicKey 公钥
|
||||
* @param publicKey 公钥
|
||||
* @return {@link RSA}
|
||||
* @since 3.0.5
|
||||
*/
|
||||
@@ -781,7 +781,7 @@ public final class SecureUtil {
|
||||
/**
|
||||
* 创建签名算法对象<br>
|
||||
* 生成新的私钥公钥对
|
||||
*
|
||||
*
|
||||
* @param algorithm 签名算法
|
||||
* @return {@link Sign}
|
||||
* @since 3.3.0
|
||||
@@ -794,10 +794,10 @@ public final class SecureUtil {
|
||||
* 创建签名算法对象<br>
|
||||
* 私钥和公钥同时为空时生成一对新的私钥和公钥<br>
|
||||
* 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
|
||||
*
|
||||
* @param algorithm 签名算法
|
||||
*
|
||||
* @param algorithm 签名算法
|
||||
* @param privateKeyBase64 私钥Base64
|
||||
* @param publicKeyBase64 公钥Base64
|
||||
* @param publicKeyBase64 公钥Base64
|
||||
* @return {@link Sign}
|
||||
* @since 3.3.0
|
||||
*/
|
||||
@@ -809,9 +809,10 @@ public final class SecureUtil {
|
||||
* 创建Sign算法对象<br>
|
||||
* 私钥和公钥同时为空时生成一对新的私钥和公钥<br>
|
||||
* 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
|
||||
*
|
||||
*
|
||||
* @param algorithm 算法枚举
|
||||
* @param privateKey 私钥
|
||||
* @param publicKey 公钥
|
||||
* @param publicKey 公钥
|
||||
* @return {@link Sign}
|
||||
* @since 3.3.0
|
||||
*/
|
||||
@@ -823,7 +824,7 @@ public final class SecureUtil {
|
||||
* 对参数做签名<br>
|
||||
* 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串<br>
|
||||
* 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
|
||||
*
|
||||
*
|
||||
* @param crypto 对称加密算法
|
||||
* @param params 参数
|
||||
* @return 签名
|
||||
@@ -836,12 +837,12 @@ public final class SecureUtil {
|
||||
/**
|
||||
* 对参数做签名<br>
|
||||
* 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串
|
||||
*
|
||||
* @param crypto 对称加密算法
|
||||
* @param params 参数
|
||||
* @param separator entry之间的连接符
|
||||
*
|
||||
* @param crypto 对称加密算法
|
||||
* @param params 参数
|
||||
* @param separator entry之间的连接符
|
||||
* @param keyValueSeparator kv之间的连接符
|
||||
* @param isIgnoreNull 是否忽略null的键和值
|
||||
* @param isIgnoreNull 是否忽略null的键和值
|
||||
* @return 签名
|
||||
* @since 4.0.1
|
||||
*/
|
||||
@@ -857,7 +858,7 @@ public final class SecureUtil {
|
||||
* 对参数做md5签名<br>
|
||||
* 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串<br>
|
||||
* 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
|
||||
*
|
||||
*
|
||||
* @param params 参数
|
||||
* @return 签名
|
||||
* @since 4.0.1
|
||||
@@ -870,7 +871,7 @@ public final class SecureUtil {
|
||||
* 对参数做Sha1签名<br>
|
||||
* 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串<br>
|
||||
* 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
|
||||
*
|
||||
*
|
||||
* @param params 参数
|
||||
* @return 签名
|
||||
* @since 4.0.8
|
||||
@@ -883,7 +884,7 @@ public final class SecureUtil {
|
||||
* 对参数做Sha256签名<br>
|
||||
* 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串<br>
|
||||
* 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
|
||||
*
|
||||
*
|
||||
* @param params 参数
|
||||
* @return 签名
|
||||
* @since 4.0.1
|
||||
@@ -896,9 +897,9 @@ public final class SecureUtil {
|
||||
* 对参数做签名<br>
|
||||
* 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串<br>
|
||||
* 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
|
||||
*
|
||||
*
|
||||
* @param digestAlgorithm 摘要算法
|
||||
* @param params 参数
|
||||
* @param params 参数
|
||||
* @return 签名
|
||||
* @since 4.0.1
|
||||
*/
|
||||
@@ -909,12 +910,12 @@ public final class SecureUtil {
|
||||
/**
|
||||
* 对参数做签名<br>
|
||||
* 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串
|
||||
*
|
||||
* @param digestAlgorithm 摘要算法
|
||||
* @param params 参数
|
||||
* @param separator entry之间的连接符
|
||||
*
|
||||
* @param digestAlgorithm 摘要算法
|
||||
* @param params 参数
|
||||
* @param separator entry之间的连接符
|
||||
* @param keyValueSeparator kv之间的连接符
|
||||
* @param isIgnoreNull 是否忽略null的键和值
|
||||
* @param isIgnoreNull 是否忽略null的键和值
|
||||
* @return 签名
|
||||
* @since 4.0.1
|
||||
*/
|
||||
@@ -927,9 +928,10 @@ public final class SecureUtil {
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------- UUID
|
||||
|
||||
/**
|
||||
* 简化的UUID,去掉了横线
|
||||
*
|
||||
*
|
||||
* @return 简化的UUID,去掉了横线
|
||||
* @deprecated 请使用 {@link IdUtil#simpleUUID()}
|
||||
*/
|
||||
@@ -940,11 +942,11 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 增加加密解密的算法提供者,默认优先使用,例如:
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* @param provider 算法提供者
|
||||
* @since 4.1.22
|
||||
*/
|
||||
@@ -954,12 +956,12 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 解码字符串密钥,可支持的编码如下:
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* 1. Hex(16进制)编码
|
||||
* 1. Base64编码
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* @param key 被解码的密钥字符串
|
||||
* @return 密钥
|
||||
* @since 4.3.3
|
||||
@@ -970,8 +972,9 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 创建{@link Cipher}
|
||||
*
|
||||
*
|
||||
* @param algorithm 算法
|
||||
* @return {@link Cipher}
|
||||
* @since 4.5.2
|
||||
*/
|
||||
public static Cipher createCipher(String algorithm) {
|
||||
@@ -989,8 +992,9 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 创建{@link MessageDigest}
|
||||
*
|
||||
*
|
||||
* @param algorithm 算法
|
||||
* @return {@link MessageDigest}
|
||||
* @since 4.5.2
|
||||
*/
|
||||
public static MessageDigest createMessageDigest(String algorithm) {
|
||||
@@ -1008,8 +1012,9 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 创建{@link Mac}
|
||||
*
|
||||
*
|
||||
* @param algorithm 算法
|
||||
* @return {@link Mac}
|
||||
* @since 4.5.13
|
||||
*/
|
||||
public static Mac createMac(String algorithm) {
|
||||
@@ -1027,7 +1032,7 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* RC4算法
|
||||
*
|
||||
*
|
||||
* @param key 密钥
|
||||
* @return {@link RC4}
|
||||
*/
|
||||
@@ -1037,7 +1042,7 @@ public final class SecureUtil {
|
||||
|
||||
/**
|
||||
* 强制关闭Bouncy Castle库的使用,全局有效
|
||||
*
|
||||
*
|
||||
* @since 4.5.2
|
||||
*/
|
||||
public static void disableBouncyCastle() {
|
||||
|
@@ -150,6 +150,7 @@ public abstract class AbstractAsymmetricCrypto<T extends AbstractAsymmetricCrypt
|
||||
* 编码为Base64字符串
|
||||
*
|
||||
* @param data 被加密的字符串
|
||||
* @param charset 编码
|
||||
* @param keyType 私钥或公钥 {@link KeyType}
|
||||
* @return Base64字符串
|
||||
* @since 4.0.1
|
||||
|
@@ -12,7 +12,7 @@ import cn.hutool.core.util.CharsetUtil;
|
||||
* 使用方法如下:
|
||||
* <p>
|
||||
* <code>
|
||||
* String pw_hash = BCrypt.hashpw(plain_password, BCrypt.gensalt()); <br />
|
||||
* String pw_hash = BCrypt.hashpw(plain_password, BCrypt.gensalt());
|
||||
* </code>
|
||||
* <p>
|
||||
* 使用checkpw方法检查被加密的字符串是否与原始字符串匹配:
|
||||
@@ -24,8 +24,8 @@ import cn.hutool.core.util.CharsetUtil;
|
||||
* gensalt方法提供了可选参数 (log_rounds) 来定义加盐多少,也决定了加密的复杂度:
|
||||
* <p>
|
||||
* <code>
|
||||
* String strong_salt = BCrypt.gensalt(10)<br />
|
||||
* String stronger_salt = BCrypt.gensalt(12)<br />
|
||||
* String strong_salt = BCrypt.gensalt(10);
|
||||
* String stronger_salt = BCrypt.gensalt(12);
|
||||
* </code>
|
||||
*
|
||||
* @author Damien Miller
|
||||
@@ -192,7 +192,7 @@ public class BCrypt {
|
||||
* @throws IllegalArgumentException if maxolen is invalid
|
||||
*/
|
||||
private static byte[] decodeBase64(String s, int maxolen) throws IllegalArgumentException {
|
||||
StringBuffer rs = new StringBuffer();
|
||||
final StringBuilder rs = new StringBuilder();
|
||||
int off = 0, slen = s.length(), olen = 0;
|
||||
byte[] ret;
|
||||
byte c1, c2, c3, c4, o;
|
||||
|
@@ -10,16 +10,16 @@ import cn.hutool.core.util.CharsetUtil;
|
||||
|
||||
/**
|
||||
* 摘要算法工具类
|
||||
*
|
||||
* @author Looly
|
||||
*
|
||||
* @author Looly
|
||||
*/
|
||||
public class DigestUtil {
|
||||
|
||||
// ------------------------------------------------------------------------------------------- MD5
|
||||
|
||||
/**
|
||||
* 计算32位MD5摘要值
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return MD5摘要
|
||||
*/
|
||||
@@ -29,8 +29,8 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算32位MD5摘要值
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @param charset 编码
|
||||
* @return MD5摘要
|
||||
*/
|
||||
@@ -40,7 +40,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算32位MD5摘要值,使用UTF-8编码
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return MD5摘要
|
||||
*/
|
||||
@@ -50,7 +50,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算32位MD5摘要值
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return MD5摘要
|
||||
*/
|
||||
@@ -60,7 +60,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算32位MD5摘要值
|
||||
*
|
||||
*
|
||||
* @param file 被摘要文件
|
||||
* @return MD5摘要
|
||||
*/
|
||||
@@ -70,7 +70,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算32位MD5摘要值,并转为16进制字符串
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return MD5摘要的16进制表示
|
||||
*/
|
||||
@@ -80,19 +80,19 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算32位MD5摘要值,并转为16进制字符串
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @param charset 编码
|
||||
* @return MD5摘要的16进制表示
|
||||
*/
|
||||
public static String md5Hex(String data, String charset) {
|
||||
return new MD5().digestHex(data, charset);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 计算32位MD5摘要值,并转为16进制字符串
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @param charset 编码
|
||||
* @return MD5摘要的16进制表示
|
||||
* @since 4.6.0
|
||||
@@ -103,7 +103,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算32位MD5摘要值,并转为16进制字符串
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return MD5摘要的16进制表示
|
||||
*/
|
||||
@@ -113,7 +113,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算32位MD5摘要值,并转为16进制字符串
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return MD5摘要的16进制表示
|
||||
*/
|
||||
@@ -123,18 +123,19 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算32位MD5摘要值,并转为16进制字符串
|
||||
*
|
||||
*
|
||||
* @param file 被摘要文件
|
||||
* @return MD5摘要的16进制表示
|
||||
*/
|
||||
public static String md5Hex(File file) {
|
||||
return new MD5().digestHex(file);
|
||||
}
|
||||
|
||||
|
||||
// ------------------------------------------------------------------------------------------- MD5 16
|
||||
|
||||
/**
|
||||
* 计算16位MD5摘要值,并转为16进制字符串
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return MD5摘要的16进制表示
|
||||
* @since 4.6.0
|
||||
@@ -145,8 +146,8 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算16位MD5摘要值,并转为16进制字符串
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @param charset 编码
|
||||
* @return MD5摘要的16进制表示
|
||||
* @since 4.6.0
|
||||
@@ -157,7 +158,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算16位MD5摘要值,并转为16进制字符串
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return MD5摘要的16进制表示
|
||||
* @since 4.6.0
|
||||
@@ -168,7 +169,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算16位MD5摘要值,并转为16进制字符串
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return MD5摘要的16进制表示
|
||||
* @since 4.6.0
|
||||
@@ -179,7 +180,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算16位MD5摘要值,并转为16进制字符串
|
||||
*
|
||||
*
|
||||
* @param file 被摘要文件
|
||||
* @return MD5摘要的16进制表示
|
||||
* @since 4.6.0
|
||||
@@ -190,7 +191,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 32位MD5转16位MD5
|
||||
*
|
||||
*
|
||||
* @param md5Hex 32位MD5
|
||||
* @return 16位MD5
|
||||
* @since 4.4.1
|
||||
@@ -200,9 +201,10 @@ public class DigestUtil {
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------- SHA-1
|
||||
|
||||
/**
|
||||
* 计算SHA-1摘要值
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return SHA-1摘要
|
||||
*/
|
||||
@@ -212,8 +214,8 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算SHA-1摘要值
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @param charset 编码
|
||||
* @return SHA-1摘要
|
||||
*/
|
||||
@@ -223,7 +225,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算sha1摘要值,使用UTF-8编码
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return MD5摘要
|
||||
*/
|
||||
@@ -233,7 +235,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算SHA-1摘要值
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return SHA-1摘要
|
||||
*/
|
||||
@@ -243,7 +245,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算SHA-1摘要值
|
||||
*
|
||||
*
|
||||
* @param file 被摘要文件
|
||||
* @return SHA-1摘要
|
||||
*/
|
||||
@@ -253,7 +255,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算SHA-1摘要值,并转为16进制字符串
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return SHA-1摘要的16进制表示
|
||||
*/
|
||||
@@ -263,8 +265,8 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算SHA-1摘要值,并转为16进制字符串
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @param charset 编码
|
||||
* @return SHA-1摘要的16进制表示
|
||||
*/
|
||||
@@ -274,7 +276,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算SHA-1摘要值,并转为16进制字符串
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return SHA-1摘要的16进制表示
|
||||
*/
|
||||
@@ -284,7 +286,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算SHA-1摘要值,并转为16进制字符串
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return SHA-1摘要的16进制表示
|
||||
*/
|
||||
@@ -294,7 +296,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算SHA-1摘要值,并转为16进制字符串
|
||||
*
|
||||
*
|
||||
* @param file 被摘要文件
|
||||
* @return SHA-1摘要的16进制表示
|
||||
*/
|
||||
@@ -303,9 +305,10 @@ public class DigestUtil {
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------- SHA-256
|
||||
|
||||
/**
|
||||
* 计算SHA-256摘要值
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return SHA-256摘要
|
||||
* @since 3.0.8
|
||||
@@ -316,8 +319,8 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算SHA-256摘要值
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @param charset 编码
|
||||
* @return SHA-256摘要
|
||||
* @since 3.0.8
|
||||
@@ -328,7 +331,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算sha256摘要值,使用UTF-8编码
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return MD5摘要
|
||||
* @since 3.0.8
|
||||
@@ -339,7 +342,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算SHA-256摘要值
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return SHA-256摘要
|
||||
* @since 3.0.8
|
||||
@@ -350,7 +353,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算SHA-256摘要值
|
||||
*
|
||||
*
|
||||
* @param file 被摘要文件
|
||||
* @return SHA-256摘要
|
||||
* @since 3.0.8
|
||||
@@ -361,7 +364,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算SHA-1摘要值,并转为16进制字符串
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return SHA-256摘要的16进制表示
|
||||
* @since 3.0.8
|
||||
@@ -372,8 +375,8 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算SHA-256摘要值,并转为16进制字符串
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @param charset 编码
|
||||
* @return SHA-256摘要的16进制表示
|
||||
* @since 3.0.8
|
||||
@@ -384,7 +387,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算SHA-256摘要值,并转为16进制字符串
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return SHA-256摘要的16进制表示
|
||||
* @since 3.0.8
|
||||
@@ -395,7 +398,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算SHA-256摘要值,并转为16进制字符串
|
||||
*
|
||||
*
|
||||
* @param data 被摘要数据
|
||||
* @return SHA-256摘要的16进制表示
|
||||
* @since 3.0.8
|
||||
@@ -406,7 +409,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 计算SHA-256摘要值,并转为16进制字符串
|
||||
*
|
||||
*
|
||||
* @param file 被摘要文件
|
||||
* @return SHA-256摘要的16进制表示
|
||||
* @since 3.0.8
|
||||
@@ -416,11 +419,12 @@ public class DigestUtil {
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------- Hmac
|
||||
|
||||
/**
|
||||
* 创建HMac对象,调用digest方法可获得hmac值
|
||||
*
|
||||
*
|
||||
* @param algorithm {@link HmacAlgorithm}
|
||||
* @param key 密钥,如果为<code>null</code>生成随机密钥
|
||||
* @param key 密钥,如果为<code>null</code>生成随机密钥
|
||||
* @return {@link HMac}
|
||||
* @since 3.0.3
|
||||
*/
|
||||
@@ -430,9 +434,9 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 创建HMac对象,调用digest方法可获得hmac值
|
||||
*
|
||||
*
|
||||
* @param algorithm {@link HmacAlgorithm}
|
||||
* @param key 密钥{@link SecretKey},如果为<code>null</code>生成随机密钥
|
||||
* @param key 密钥{@link SecretKey},如果为<code>null</code>生成随机密钥
|
||||
* @return {@link HMac}
|
||||
* @since 3.0.3
|
||||
*/
|
||||
@@ -442,7 +446,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 新建摘要器
|
||||
*
|
||||
*
|
||||
* @param algorithm 签名算法
|
||||
* @return Digester
|
||||
* @since 4.0.1
|
||||
@@ -453,7 +457,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 新建摘要器
|
||||
*
|
||||
*
|
||||
* @param algorithm 签名算法
|
||||
* @return Digester
|
||||
* @since 4.2.1
|
||||
@@ -464,7 +468,7 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 生成Bcrypt加密后的密文
|
||||
*
|
||||
*
|
||||
* @param password 明文密码
|
||||
* @return 加密后的密文
|
||||
* @since 4.1.1
|
||||
@@ -475,8 +479,9 @@ public class DigestUtil {
|
||||
|
||||
/**
|
||||
* 验证密码是否与Bcrypt加密后的密文匹配
|
||||
*
|
||||
*
|
||||
* @param password 明文密码
|
||||
* @param hashed hash值(加密后的值)
|
||||
* @return 是否匹配
|
||||
* @since 4.1.1
|
||||
*/
|
||||
|
Reference in New Issue
Block a user