From 39cd57e67570ab95869e850a12837f79a6ce6060 Mon Sep 17 00:00:00 2001 From: ZhouXY108 Date: Fri, 17 Mar 2023 18:46:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E5=8E=9F=E7=94=9F=E5=93=88?= =?UTF-8?q?=E5=B8=8C=E7=AE=97=E6=B3=95=E3=80=82=E4=BD=BF=E7=94=A8=E8=87=AA?= =?UTF-8?q?=E5=B7=B1=E5=AE=9E=E7=8E=B0=E7=9A=84=E9=9A=8F=E6=9C=BA=E7=9B=90?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=96=B9=E6=B3=95=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plusone/system/util/PasswordUtil.java | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/plusone-system/plusone-system-common/src/main/java/xyz/zhouxy/plusone/system/util/PasswordUtil.java b/plusone-system/plusone-system-common/src/main/java/xyz/zhouxy/plusone/system/util/PasswordUtil.java index e377ca7..015a5f6 100644 --- a/plusone-system/plusone-system-common/src/main/java/xyz/zhouxy/plusone/system/util/PasswordUtil.java +++ b/plusone-system/plusone-system-common/src/main/java/xyz/zhouxy/plusone/system/util/PasswordUtil.java @@ -1,19 +1,26 @@ package xyz.zhouxy.plusone.system.util; +import java.math.BigInteger; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + import javax.annotation.Nonnull; -import cn.hutool.core.util.RandomUtil; -import cn.hutool.crypto.digest.DigestUtil; +import lombok.extern.slf4j.Slf4j; import xyz.zhouxy.plusone.constant.ErrorCodeConsts; import xyz.zhouxy.plusone.exception.BizException; +import xyz.zhouxy.plusone.util.RandomUtil; /** * 密码工具类 * * @author ZhouXY */ +@Slf4j public final class PasswordUtil { - private static final String SALT_BASE_STRING = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#$%^&*()_-+={}[]|\\:;\"',.<>?/"; + private static final char[] SALT_BASE_CHAR_ARRAY = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#$%^&*()_-+={}[]|\\:;\"',.<>?/" + .toCharArray(); /** * 将密码和随机盐混合,并进行哈希加密。 @@ -29,7 +36,7 @@ public final class PasswordUtil { var passwordWithSalt = salt.substring(0, i) + password + salt.substring(1); - String sha512Hex = DigestUtil.sha512Hex(passwordWithSalt); + String sha512Hex = sha512Hex(passwordWithSalt); if (sha512Hex == null) { throw new BizException(ErrorCodeConsts.DEFAULT_ERROR_CODE, "未知错误:哈希加密失败!"); } @@ -42,11 +49,23 @@ public final class PasswordUtil { * @return 生成的随机盐 */ public static String generateRandomSalt() { - return RandomUtil.randomString(SALT_BASE_STRING, 24); + return RandomUtil.randomStr(SALT_BASE_CHAR_ARRAY, 24); } private PasswordUtil() { // 不允许实例化 throw new IllegalStateException("Utility class"); } + + private static String sha512Hex(String data) { + try { + MessageDigest messageDigest = MessageDigest.getInstance("SHA-512"); + messageDigest.update(data.getBytes(StandardCharsets.UTF_8)); + byte[] result = messageDigest.digest(); + return new BigInteger(1, result).toString(16); + } catch (NoSuchAlgorithmException e) { + log.error("{}", e); + } + return null; + } }