【Spring Boot】springboot+MD5实现用户密码加密与验证

2025-08-14 18:09:24  阅读 92 次 评论 0 条

需求:

登录和注册的密码涉及到网络安全,对密码的加密能够在一定程度上增加安全性,密码验证其实就是再次把密码明文和盐值再次重新组装进行加密,来判断加密后的结果是否匹配

完整代码

import org.apache.commons.codec.digest.DigestUtils;

import java.security.SecureRandom;

public class MD5Utils {

    private static final String SALT_CHAR_POOL = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";//盐包含的字符串
    private static final SecureRandom RANDOM = new SecureRandom();//随机数生成器

    /**
     * 生成随机盐
     * @param length 盐长度
     * @return 盐文本
     */
    public static String generateSalt(int length) {
        StringBuilder sb = new StringBuilder(length);
        for (int i = 0; i < length; i++) {
            int idx = RANDOM.nextInt(SALT_CHAR_POOL.length());
            sb.append(SALT_CHAR_POOL.charAt(idx));
        }
        return sb.toString();
    }

    /**
     * md5 加密
     * @param password 密码明文
     * @param salt 盐文本
     * @return 加密后的文本
     */
    public static String hashPassword(String password, String salt) {
        String str = salt + password;
        return DigestUtils.md5Hex(str);
    }

    /**
     * 验证密码
     * @param inputPassword 密码明文
     * @param storedSalt 密码盐值
     * @param storedHash 数据库里面保存的密码
     * @return
     */
    public static boolean verifyPassword(String inputPassword, String storedSalt, String storedHash) {
        String newHash = hashPassword(inputPassword, storedSalt);
        return newHash.equals(storedHash);
    }


    public static void main(String[] args) {
        String password = "123456";
        String salt = generateSalt(16); // 16字节随机盐
        String hashed = hashPassword(password, salt);

        System.out.println("随机盐: " + salt);
        System.out.println("加密后的密码: " + hashed);

        boolean isMatch = verifyPassword("123456", salt, hashed);
        System.out.println("验证结果: " + isMatch);
    }

}



微信扫码查看本文
本文地址:https://www.yangguangdream.com/?id=2261
版权声明:本文为原创文章,版权归 编辑君 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?