mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
fix code
This commit is contained in:
parent
84deef4ca4
commit
49a6611ae8
@ -21,8 +21,8 @@ import org.dromara.hutool.crypto.asymmetric.AsymmetricAlgorithm;
|
||||
import org.dromara.hutool.crypto.asymmetric.RSA;
|
||||
import org.dromara.hutool.crypto.digest.DigestAlgorithm;
|
||||
import org.dromara.hutool.crypto.digest.Digester;
|
||||
import org.dromara.hutool.crypto.digest.HMac;
|
||||
import org.dromara.hutool.crypto.digest.HmacAlgorithm;
|
||||
import org.dromara.hutool.crypto.digest.mac.HMac;
|
||||
import org.dromara.hutool.crypto.digest.mac.HmacAlgorithm;
|
||||
import org.dromara.hutool.crypto.digest.MD5;
|
||||
import org.dromara.hutool.crypto.provider.GlobalProviderFactory;
|
||||
import org.dromara.hutool.crypto.symmetric.*;
|
||||
|
@ -25,8 +25,8 @@ import org.dromara.hutool.core.array.ArrayUtil;
|
||||
import org.dromara.hutool.core.io.IORuntimeException;
|
||||
import org.dromara.hutool.crypto.CryptoException;
|
||||
import org.dromara.hutool.crypto.asymmetric.SM2;
|
||||
import org.dromara.hutool.crypto.digest.HMac;
|
||||
import org.dromara.hutool.crypto.digest.HmacAlgorithm;
|
||||
import org.dromara.hutool.crypto.digest.mac.HMac;
|
||||
import org.dromara.hutool.crypto.digest.mac.HmacAlgorithm;
|
||||
import org.dromara.hutool.crypto.digest.SM3;
|
||||
import org.dromara.hutool.crypto.digest.mac.BCHMacEngine;
|
||||
import org.dromara.hutool.crypto.digest.mac.MacEngine;
|
||||
|
@ -13,6 +13,8 @@
|
||||
package org.dromara.hutool.crypto.digest;
|
||||
|
||||
import org.dromara.hutool.core.util.CharsetUtil;
|
||||
import org.dromara.hutool.crypto.digest.mac.HMac;
|
||||
import org.dromara.hutool.crypto.digest.mac.HmacAlgorithm;
|
||||
|
||||
import javax.crypto.SecretKey;
|
||||
import java.io.File;
|
||||
@ -26,7 +28,7 @@ import java.nio.charset.Charset;
|
||||
*/
|
||||
public class DigestUtil {
|
||||
|
||||
// ------------------------------------------------------------------------------------------- MD5
|
||||
// region ----- MD5
|
||||
|
||||
/**
|
||||
* 计算32位MD5摘要值
|
||||
@ -131,7 +133,9 @@ public class DigestUtil {
|
||||
return new MD5().digestHex(file);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------- MD5 16
|
||||
// endregion
|
||||
|
||||
// region ----- MD5 16
|
||||
|
||||
/**
|
||||
* 计算16位MD5摘要值,并转为16进制字符串
|
||||
@ -200,7 +204,9 @@ public class DigestUtil {
|
||||
return md5Hex.substring(8, 24);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------- SHA-1
|
||||
// endregion
|
||||
|
||||
// region ----- SHA-1
|
||||
|
||||
/**
|
||||
* 计算SHA-1摘要值
|
||||
@ -209,7 +215,7 @@ public class DigestUtil {
|
||||
* @return SHA-1摘要
|
||||
*/
|
||||
public static byte[] sha1(final byte[] data) {
|
||||
return new Digester(DigestAlgorithm.SHA1).digest(data);
|
||||
return digester(DigestAlgorithm.SHA1).digest(data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -220,7 +226,7 @@ public class DigestUtil {
|
||||
* @return SHA-1摘要
|
||||
*/
|
||||
public static byte[] sha1(final String data, final Charset charset) {
|
||||
return new Digester(DigestAlgorithm.SHA1).digest(data, charset);
|
||||
return digester(DigestAlgorithm.SHA1).digest(data, charset);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -240,7 +246,7 @@ public class DigestUtil {
|
||||
* @return SHA-1摘要
|
||||
*/
|
||||
public static byte[] sha1(final InputStream data) {
|
||||
return new Digester(DigestAlgorithm.SHA1).digest(data);
|
||||
return digester(DigestAlgorithm.SHA1).digest(data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -250,7 +256,7 @@ public class DigestUtil {
|
||||
* @return SHA-1摘要
|
||||
*/
|
||||
public static byte[] sha1(final File file) {
|
||||
return new Digester(DigestAlgorithm.SHA1).digest(file);
|
||||
return digester(DigestAlgorithm.SHA1).digest(file);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -260,7 +266,7 @@ public class DigestUtil {
|
||||
* @return SHA-1摘要的16进制表示
|
||||
*/
|
||||
public static String sha1Hex(final byte[] data) {
|
||||
return new Digester(DigestAlgorithm.SHA1).digestHex(data);
|
||||
return digester(DigestAlgorithm.SHA1).digestHex(data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -271,7 +277,7 @@ public class DigestUtil {
|
||||
* @return SHA-1摘要的16进制表示
|
||||
*/
|
||||
public static String sha1Hex(final String data, final Charset charset) {
|
||||
return new Digester(DigestAlgorithm.SHA1).digestHex(data, charset);
|
||||
return digester(DigestAlgorithm.SHA1).digestHex(data, charset);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -291,7 +297,7 @@ public class DigestUtil {
|
||||
* @return SHA-1摘要的16进制表示
|
||||
*/
|
||||
public static String sha1Hex(final InputStream data) {
|
||||
return new Digester(DigestAlgorithm.SHA1).digestHex(data);
|
||||
return digester(DigestAlgorithm.SHA1).digestHex(data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -301,10 +307,12 @@ public class DigestUtil {
|
||||
* @return SHA-1摘要的16进制表示
|
||||
*/
|
||||
public static String sha1Hex(final File file) {
|
||||
return new Digester(DigestAlgorithm.SHA1).digestHex(file);
|
||||
return digester(DigestAlgorithm.SHA1).digestHex(file);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------- SHA-256
|
||||
// endregion
|
||||
|
||||
// region ----- SHA-256
|
||||
|
||||
/**
|
||||
* 计算SHA-256摘要值
|
||||
@ -314,7 +322,7 @@ public class DigestUtil {
|
||||
* @since 3.0.8
|
||||
*/
|
||||
public static byte[] sha256(final byte[] data) {
|
||||
return new Digester(DigestAlgorithm.SHA256).digest(data);
|
||||
return digester(DigestAlgorithm.SHA256).digest(data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -336,7 +344,7 @@ public class DigestUtil {
|
||||
* @return SHA-256摘要
|
||||
*/
|
||||
public static byte[] sha256(final String data, final Charset charset) {
|
||||
return new Digester(DigestAlgorithm.SHA256).digest(data, charset);
|
||||
return digester(DigestAlgorithm.SHA256).digest(data, charset);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -347,7 +355,7 @@ public class DigestUtil {
|
||||
* @since 3.0.8
|
||||
*/
|
||||
public static byte[] sha256(final InputStream data) {
|
||||
return new Digester(DigestAlgorithm.SHA256).digest(data);
|
||||
return digester(DigestAlgorithm.SHA256).digest(data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -358,7 +366,7 @@ public class DigestUtil {
|
||||
* @since 3.0.8
|
||||
*/
|
||||
public static byte[] sha256(final File file) {
|
||||
return new Digester(DigestAlgorithm.SHA256).digest(file);
|
||||
return digester(DigestAlgorithm.SHA256).digest(file);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -369,7 +377,7 @@ public class DigestUtil {
|
||||
* @since 3.0.8
|
||||
*/
|
||||
public static String sha256Hex(final byte[] data) {
|
||||
return new Digester(DigestAlgorithm.SHA256).digestHex(data);
|
||||
return digester(DigestAlgorithm.SHA256).digestHex(data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -381,7 +389,7 @@ public class DigestUtil {
|
||||
* @since 3.0.8
|
||||
*/
|
||||
public static String sha256Hex(final String data, final Charset charset) {
|
||||
return new Digester(DigestAlgorithm.SHA256).digestHex(data, charset);
|
||||
return digester(DigestAlgorithm.SHA256).digestHex(data, charset);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -403,7 +411,7 @@ public class DigestUtil {
|
||||
* @since 3.0.8
|
||||
*/
|
||||
public static String sha256Hex(final InputStream data) {
|
||||
return new Digester(DigestAlgorithm.SHA256).digestHex(data);
|
||||
return digester(DigestAlgorithm.SHA256).digestHex(data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -414,10 +422,12 @@ public class DigestUtil {
|
||||
* @since 3.0.8
|
||||
*/
|
||||
public static String sha256Hex(final File file) {
|
||||
return new Digester(DigestAlgorithm.SHA256).digestHex(file);
|
||||
return digester(DigestAlgorithm.SHA256).digestHex(file);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------- SHA-512
|
||||
// endregion
|
||||
|
||||
// region ----- SHA-512
|
||||
|
||||
/**
|
||||
* 计算SHA-512摘要值
|
||||
@ -426,7 +436,7 @@ public class DigestUtil {
|
||||
* @return SHA-512摘要
|
||||
*/
|
||||
public static byte[] sha512(final byte[] data) {
|
||||
return new Digester(DigestAlgorithm.SHA512).digest(data);
|
||||
return digester(DigestAlgorithm.SHA512).digest(data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -438,7 +448,7 @@ public class DigestUtil {
|
||||
* @since 3.0.8
|
||||
*/
|
||||
public static byte[] sha512(final String data, final Charset charset) {
|
||||
return new Digester(DigestAlgorithm.SHA512).digest(data, charset);
|
||||
return digester(DigestAlgorithm.SHA512).digest(data, charset);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -458,7 +468,7 @@ public class DigestUtil {
|
||||
* @return SHA-512摘要
|
||||
*/
|
||||
public static byte[] sha512(final InputStream data) {
|
||||
return new Digester(DigestAlgorithm.SHA512).digest(data);
|
||||
return digester(DigestAlgorithm.SHA512).digest(data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -468,7 +478,7 @@ public class DigestUtil {
|
||||
* @return SHA-512摘要
|
||||
*/
|
||||
public static byte[] sha512(final File file) {
|
||||
return new Digester(DigestAlgorithm.SHA512).digest(file);
|
||||
return digester(DigestAlgorithm.SHA512).digest(file);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -478,7 +488,7 @@ public class DigestUtil {
|
||||
* @return SHA-512摘要的16进制表示
|
||||
*/
|
||||
public static String sha512Hex(final byte[] data) {
|
||||
return new Digester(DigestAlgorithm.SHA512).digestHex(data);
|
||||
return digester(DigestAlgorithm.SHA512).digestHex(data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -489,7 +499,7 @@ public class DigestUtil {
|
||||
* @return SHA-512摘要的16进制表示
|
||||
*/
|
||||
public static String sha512Hex(final String data, final Charset charset) {
|
||||
return new Digester(DigestAlgorithm.SHA512).digestHex(data, charset);
|
||||
return digester(DigestAlgorithm.SHA512).digestHex(data, charset);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -509,7 +519,7 @@ public class DigestUtil {
|
||||
* @return SHA-512摘要的16进制表示
|
||||
*/
|
||||
public static String sha512Hex(final InputStream data) {
|
||||
return new Digester(DigestAlgorithm.SHA512).digestHex(data);
|
||||
return digester(DigestAlgorithm.SHA512).digestHex(data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -519,10 +529,12 @@ public class DigestUtil {
|
||||
* @return SHA-512摘要的16进制表示
|
||||
*/
|
||||
public static String sha512Hex(final File file) {
|
||||
return new Digester(DigestAlgorithm.SHA512).digestHex(file);
|
||||
return digester(DigestAlgorithm.SHA512).digestHex(file);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------- Hmac
|
||||
// endregion
|
||||
|
||||
// region ----- Hmac
|
||||
|
||||
/**
|
||||
* 创建HMac对象,调用digest方法可获得hmac值
|
||||
@ -548,6 +560,8 @@ public class DigestUtil {
|
||||
return new HMac(algorithm, key);
|
||||
}
|
||||
|
||||
// endregion
|
||||
|
||||
/**
|
||||
* 新建摘要器
|
||||
*
|
||||
|
@ -29,6 +29,9 @@ package org.dromara.hutool.crypto.digest;
|
||||
public class SM3 extends Digester {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 算法名称:SM3
|
||||
*/
|
||||
public static final String ALGORITHM_NAME = "SM3";
|
||||
|
||||
/**
|
||||
|
@ -33,7 +33,7 @@ public class DefaultHMacEngine implements MacEngine {
|
||||
|
||||
private Mac mac;
|
||||
|
||||
// ------------------------------------------------------------------------------------------- Constructor start
|
||||
// region ----- Constructor
|
||||
|
||||
/**
|
||||
* 构造
|
||||
@ -62,13 +62,15 @@ public class DefaultHMacEngine implements MacEngine {
|
||||
*
|
||||
* @param algorithm 算法
|
||||
* @param key 密钥
|
||||
* @param spec {@link AlgorithmParameterSpec}
|
||||
* @param spec {@link AlgorithmParameterSpec}
|
||||
* @since 5.7.12
|
||||
*/
|
||||
public DefaultHMacEngine(final String algorithm, final Key key, final AlgorithmParameterSpec spec) {
|
||||
init(algorithm, key, spec);
|
||||
}
|
||||
// ------------------------------------------------------------------------------------------- Constructor end
|
||||
// endregion
|
||||
|
||||
// region ----- init
|
||||
|
||||
/**
|
||||
* 初始化
|
||||
@ -119,6 +121,7 @@ public class DefaultHMacEngine implements MacEngine {
|
||||
}
|
||||
return this;
|
||||
}
|
||||
// endregion
|
||||
|
||||
/**
|
||||
* 获得 {@link Mac}
|
||||
|
@ -10,11 +10,7 @@
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
package org.dromara.hutool.crypto.digest;
|
||||
|
||||
import org.dromara.hutool.crypto.digest.mac.Mac;
|
||||
import org.dromara.hutool.crypto.digest.mac.MacEngine;
|
||||
import org.dromara.hutool.crypto.digest.mac.MacEngineFactory;
|
||||
package org.dromara.hutool.crypto.digest.mac;
|
||||
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
import java.security.Key;
|
@ -10,7 +10,7 @@
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
package org.dromara.hutool.crypto.digest;
|
||||
package org.dromara.hutool.crypto.digest.mac;
|
||||
|
||||
/**
|
||||
* HMAC算法类型<br>
|
||||
@ -19,14 +19,33 @@ package org.dromara.hutool.crypto.digest;
|
||||
* @author Looly
|
||||
*/
|
||||
public enum HmacAlgorithm {
|
||||
/**
|
||||
* HmacMD5
|
||||
*/
|
||||
HmacMD5("HmacMD5"),
|
||||
/**
|
||||
* HmacSHA1
|
||||
*/
|
||||
HmacSHA1("HmacSHA1"),
|
||||
/**
|
||||
* HmacSHA256
|
||||
*/
|
||||
HmacSHA256("HmacSHA256"),
|
||||
/**
|
||||
* HmacSHA384
|
||||
*/
|
||||
HmacSHA384("HmacSHA384"),
|
||||
/**
|
||||
* HmacSHA512
|
||||
*/
|
||||
HmacSHA512("HmacSHA512"),
|
||||
/** HmacSM3算法实现,需要BouncyCastle库支持 */
|
||||
/**
|
||||
* HmacSM3算法实现,需要BouncyCastle库支持
|
||||
*/
|
||||
HmacSM3("HmacSM3"),
|
||||
/** SM4 CMAC模式实现,需要BouncyCastle库支持 */
|
||||
/**
|
||||
* SM4 CMAC模式实现,需要BouncyCastle库支持
|
||||
*/
|
||||
SM4CMAC("SM4CMAC");
|
||||
|
||||
private final String value;
|
||||
@ -35,6 +54,11 @@ public enum HmacAlgorithm {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取算法名称值
|
||||
*
|
||||
* @return 算法名称值
|
||||
*/
|
||||
public String getValue() {
|
||||
return this.value;
|
||||
}
|
@ -13,13 +13,12 @@
|
||||
package org.dromara.hutool.crypto.digest.mac;
|
||||
|
||||
import org.dromara.hutool.crypto.bc.SmUtil;
|
||||
import org.dromara.hutool.crypto.digest.HmacAlgorithm;
|
||||
|
||||
import java.security.Key;
|
||||
import java.security.spec.AlgorithmParameterSpec;
|
||||
|
||||
/**
|
||||
* {@link MacEngine} 实现工厂类
|
||||
* {@link MacEngine} 简单工厂类
|
||||
*
|
||||
* @author Looly
|
||||
* @since 4.5.13
|
||||
|
@ -11,10 +11,16 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* MAC,全称为“Message Authentication Code”,中文名“消息鉴别码”。
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* HMAC,全称为“Hash Message Authentication Code”,中文名“散列消息鉴别码”<br>
|
||||
* 主要是利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。<br>
|
||||
* 一般的,消息鉴别码用于验证传输于两个共 同享有一个密钥的单位之间的消息。<br>
|
||||
* HMAC 可以与任何迭代散列函数捆绑使用。MD5 和 SHA-1 就是这种散列函数。HMAC 还可以使用一个用于计算和确认消息鉴别值的密钥。<br>
|
||||
* HMAC 可以与任何迭代散列函数捆绑使用。MD5 和 SHA-1 就是这种散列函数。HMAC 还可以使用一个用于计算和确认消息鉴别值的密钥。
|
||||
* </p>
|
||||
*
|
||||
* @author Looly
|
||||
* @since 4.5.13
|
||||
|
@ -14,8 +14,8 @@ package org.dromara.hutool.crypto.digest.otp;
|
||||
|
||||
import org.dromara.hutool.core.codec.binary.Base32;
|
||||
import org.dromara.hutool.core.util.RandomUtil;
|
||||
import org.dromara.hutool.crypto.digest.HMac;
|
||||
import org.dromara.hutool.crypto.digest.HmacAlgorithm;
|
||||
import org.dromara.hutool.crypto.digest.mac.HMac;
|
||||
import org.dromara.hutool.crypto.digest.mac.HmacAlgorithm;
|
||||
|
||||
/**
|
||||
* <p>HMAC-based one-time passwords (HOTP) 基于HMAC算法一次性密码生成器,
|
||||
|
@ -13,7 +13,7 @@
|
||||
package org.dromara.hutool.crypto.digest.otp;
|
||||
|
||||
import org.dromara.hutool.core.text.StrUtil;
|
||||
import org.dromara.hutool.crypto.digest.HmacAlgorithm;
|
||||
import org.dromara.hutool.crypto.digest.mac.HmacAlgorithm;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
|
@ -12,20 +12,15 @@
|
||||
|
||||
package org.dromara.hutool.crypto.symmetric;
|
||||
|
||||
import org.dromara.hutool.core.array.ArrayUtil;
|
||||
import org.dromara.hutool.core.codec.HexUtil;
|
||||
import org.dromara.hutool.core.io.IORuntimeException;
|
||||
import org.dromara.hutool.core.io.IoUtil;
|
||||
import org.dromara.hutool.core.lang.Assert;
|
||||
import org.dromara.hutool.core.lang.Console;
|
||||
import org.dromara.hutool.core.lang.Opt;
|
||||
import org.dromara.hutool.core.array.ArrayUtil;
|
||||
import org.dromara.hutool.core.codec.HexUtil;
|
||||
import org.dromara.hutool.core.util.RandomUtil;
|
||||
import org.dromara.hutool.core.text.StrUtil;
|
||||
import org.dromara.hutool.crypto.CipherMode;
|
||||
import org.dromara.hutool.crypto.CipherWrapper;
|
||||
import org.dromara.hutool.crypto.CryptoException;
|
||||
import org.dromara.hutool.crypto.KeyUtil;
|
||||
import org.dromara.hutool.crypto.Padding;
|
||||
import org.dromara.hutool.core.util.RandomUtil;
|
||||
import org.dromara.hutool.crypto.*;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.CipherInputStream;
|
||||
@ -33,7 +28,10 @@ import javax.crypto.CipherOutputStream;
|
||||
import javax.crypto.SecretKey;
|
||||
import javax.crypto.spec.IvParameterSpec;
|
||||
import javax.crypto.spec.PBEParameterSpec;
|
||||
import java.io.*;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.Serializable;
|
||||
import java.security.InvalidAlgorithmParameterException;
|
||||
import java.security.InvalidKeyException;
|
||||
import java.security.SecureRandom;
|
||||
|
@ -16,8 +16,7 @@ import org.dromara.hutool.core.util.CharsetUtil;
|
||||
import org.dromara.hutool.crypto.KeyUtil;
|
||||
import org.dromara.hutool.crypto.Mode;
|
||||
import org.dromara.hutool.crypto.Padding;
|
||||
import org.dromara.hutool.crypto.bc.SmUtil;
|
||||
import org.dromara.hutool.crypto.digest.HMac;
|
||||
import org.dromara.hutool.crypto.digest.mac.HMac;
|
||||
import org.dromara.hutool.crypto.symmetric.SM4;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
@ -4,6 +4,8 @@ import org.dromara.hutool.core.io.IoUtil;
|
||||
import org.dromara.hutool.core.util.CharsetUtil;
|
||||
import org.dromara.hutool.crypto.KeyUtil;
|
||||
import org.dromara.hutool.crypto.SecureUtil;
|
||||
import org.dromara.hutool.crypto.digest.mac.HMac;
|
||||
import org.dromara.hutool.crypto.digest.mac.HmacAlgorithm;
|
||||
import org.dromara.hutool.crypto.symmetric.ZUC;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
@ -1,6 +1,7 @@
|
||||
package org.dromara.hutool.crypto.digest;
|
||||
|
||||
import org.dromara.hutool.core.codec.binary.Base32;
|
||||
import org.dromara.hutool.crypto.digest.mac.HmacAlgorithm;
|
||||
import org.dromara.hutool.crypto.digest.otp.HOTP;
|
||||
import org.dromara.hutool.crypto.digest.otp.TOTP;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
|
@ -15,7 +15,7 @@ package org.dromara.hutool.json.jwt.signers;
|
||||
import org.dromara.hutool.core.map.BiMap;
|
||||
import org.dromara.hutool.core.util.ObjUtil;
|
||||
import org.dromara.hutool.crypto.asymmetric.SignAlgorithm;
|
||||
import org.dromara.hutool.crypto.digest.HmacAlgorithm;
|
||||
import org.dromara.hutool.crypto.digest.mac.HmacAlgorithm;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
|
@ -15,7 +15,7 @@ package org.dromara.hutool.json.jwt.signers;
|
||||
import org.dromara.hutool.core.text.StrUtil;
|
||||
import org.dromara.hutool.core.util.ByteUtil;
|
||||
import org.dromara.hutool.core.util.CharsetUtil;
|
||||
import org.dromara.hutool.crypto.digest.HMac;
|
||||
import org.dromara.hutool.crypto.digest.mac.HMac;
|
||||
|
||||
import java.nio.charset.Charset;
|
||||
import java.security.Key;
|
||||
|
Loading…
x
Reference in New Issue
Block a user