一个md5加密解密验证方式参考

一个md5加密解密验证方式参考

java 复制代码
package com.hmdp.utils;


import cn.hutool.core.util.RandomUtil;
import org.springframework.util.DigestUtils;

import java.nio.charset.StandardCharsets;

public class PasswordEncoder {

    public static String encode(String password) {
        // 生成盐
        String salt = RandomUtil.randomString(20);
        // 加密
        return encode(password,salt);
    }
    private static String encode(String password, String salt) {
        // 加密
        return salt + "@" + DigestUtils.md5DigestAsHex((password + salt).getBytes(StandardCharsets.UTF_8));
    }
    public static Boolean matches(String encodedPassword, String rawPassword) {
        if (encodedPassword == null || rawPassword == null) {
            return false;
        }
        if(!encodedPassword.contains("@")){
            throw new RuntimeException("密码格式不正确!");
        }
        String[] arr = encodedPassword.split("@");
        // 获取盐
        String salt = arr[0];
        // 比较
        return encodedPassword.equals(encode(rawPassword, salt));
    }
}
相关推荐
Micro麦可乐4 分钟前
Java常用加密算法详解与实战代码 - 附可直接运行的测试示例
java·开发语言·加密算法·aes加解密·rsa加解密·hash算法
掉鱼的猫9 分钟前
Java MCP 鉴权设计与实现指南
java·openai·mcp
天下一般9 分钟前
go入门 - day1 - 环境搭建
开发语言·后端·golang
雷羿 LexChien19 分钟前
C++内存泄漏排查
开发语言·c++
努力的小郑22 分钟前
Spring三级缓存硬核解密:二级缓存行不行?一级缓存差在哪?
java·spring·面试
水果里面有苹果26 分钟前
17-C#的socket通信TCP-1
开发语言·tcp/ip·c#
手握风云-28 分钟前
JavaEE初阶第七期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(五)
java·开发语言
发仔12328 分钟前
使用Canal实现MySQL到Elasticsearch数据同步
java·后端
nightunderblackcat29 分钟前
进阶向:Python音频录制与分析系统详解,从原理到实践
开发语言·python·音视频
hello早上好1 小时前
Spring AOP:从代理创建到切点匹配
java·后端·spring