diff --git a/src/main/java/com/chinaweal/youfool/course/controller/LoginController.java b/src/main/java/com/chinaweal/youfool/course/controller/LoginController.java index 05d141e..51f4199 100644 --- a/src/main/java/com/chinaweal/youfool/course/controller/LoginController.java +++ b/src/main/java/com/chinaweal/youfool/course/controller/LoginController.java @@ -51,7 +51,7 @@ public class LoginController { // 查询用户信息 SysUser sysUser = sysUserService.getUserByUsername(username); - if (sysUser == null || !sysUser.getPassword().equals(password)) { + if (sysUser == null || !SysUser.verifyPassword(password, sysUser.getPassword())) { return RestResult.error(BaseResultCode.BUSINESS_LOGIC_ERROR, "用户名或密码错误"); } diff --git a/src/main/java/com/chinaweal/youfool/course/entity/SysUser.java b/src/main/java/com/chinaweal/youfool/course/entity/SysUser.java index 3d63aab..9d012b7 100644 --- a/src/main/java/com/chinaweal/youfool/course/entity/SysUser.java +++ b/src/main/java/com/chinaweal/youfool/course/entity/SysUser.java @@ -9,6 +9,8 @@ import lombok.Data; import java.io.Serial; import java.io.Serializable; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; /** * 系统用户实体类 @@ -98,4 +100,64 @@ public class SysUser implements Serializable { @TableField("gitea_open_id") @Schema(description = "Gitea Open ID", example = "1234567890") private String giteaOpenId; + + /** + * 密码加密方法 + * + *

将原始密码按照MD5(MD5(原密码)+123456)的方式加密

+ * + * @param originalPassword 原始密码 + * @return 加密后的密码 + */ + public static String encryptPassword(String originalPassword) { + try { + MessageDigest md5 = MessageDigest.getInstance("MD5"); + + // 第一次MD5加密 + byte[] firstHash = md5.digest(originalPassword.getBytes()); + String firstMd5 = bytesToHex(firstHash); + + // 拼接123456 + String combined = firstMd5 + "123456"; + + // 第二次MD5加密 + byte[] secondHash = md5.digest(combined.getBytes()); + return bytesToHex(secondHash); + + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException("MD5算法不可用", e); + } + } + + /** + * 字节数组转十六进制字符串 + * + * @param bytes 字节数组 + * @return 十六进制字符串 + */ + private static String bytesToHex(byte[] bytes) { + StringBuilder hexString = new StringBuilder(); + for (byte b : bytes) { + String hex = Integer.toHexString(0xff & b); + if (hex.length() == 1) { + hexString.append('0'); + } + hexString.append(hex); + } + return hexString.toString(); + } + + /** + * 验证密码 + * + *

验证输入的密码是否与存储的密码匹配

+ * + * @param inputPassword 输入的密码 + * @param storedPassword 存储的密码 + * @return 是否匹配 + */ + public static boolean verifyPassword(String inputPassword, String storedPassword) { + String encryptedInput = encryptPassword(inputPassword); + return encryptedInput.equals(storedPassword); + } } \ No newline at end of file diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html index 43ee642..b4731ce 100644 --- a/src/main/resources/templates/login.html +++ b/src/main/resources/templates/login.html @@ -145,21 +145,7 @@ -