密码加密类

这篇博客介绍了如何在Java中创建一个密码加密类,并提供了详细的测试步骤,涵盖了加密类的创建和测试两个部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.创建加密类

package cn.tedu.boot.demo.util;

import org.springframework.stereotype.Component;
import org.springframework.util.DigestUtils;

import java.util.UUID;

@Component
public class PasswordEncoder {

    public String encode(String rawPassword) {
        // 加密过程
        // 1. 使用MD5算法
        // 2. 使用随机的盐值
        // 3. 循环5次
        // 4. 盐的处理方式为:盐 + 原密码 + 盐 + 原密码 + 盐
        // 注意:因为使用了随机盐,盐值必须被记录下来,本次的返回结果使用$分隔盐与密文
        String salt = UUID.randomUUID().toString().replace("-", "");
        String encodedPassword = rawPassword;
        for (int i = 0; i < 5; i++) {
            encodedPassword = DigestUtils.md5DigestAsHex(
                    (salt + encodedPassword + salt + encodedPassword + salt).getBytes());
        }
        return salt +encodedPassword;
    }

    public boolean matches(String rawPassword, String encodedPassword) {
        String salt = encodedPassword.substring(0, 32);
        String newPassword = rawPassword;
            for (int i = 0; i < 5; i++) {
                newPassword = DigestUtils.md5DigestAsHex(
                        (salt + newPassword + salt + newPassword + salt).getBytes());
        }
        newPassword = salt + newPassword;
        return newPassword.equals(encodedPassword);
    }

}

2.测试类 

 @Test
    public void testPasswordEncoderEncode() {
        String rawPassword = "123456";
        System.out.println(rawPassword);
        for (int i = 0; i < 5; i++) {
            String encodedPassword = new PasswordEncoder().encode(rawPassword);
            System.out.println(encodedPassword);
        }
    }
//先运行上面这个代码,把运行结果中的一条数据拿到下面来测试  

    @Test
    public void testPasswordEncoderMatches() {
        String rawPassword = "123456";
        String encodedPassword = "dec900075a0a4f30a62e222fac72d15679333cbcb75e95a05ebefb46cdd2ced5";
        System.out.println(new PasswordEncoder().matches(rawPassword, encodedPassword));
    }
//看是否为: true 

 @Test
    void passwordId(){
        String password ="1234567890abcdesa52a1";
        String newPassword =new PasswordEncode().encode(password);
        System.out.println("newPassword = " + newPassword);
        System.out.println(new PasswordEncode().matches(password,newPassword));

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值