md5加盐加密

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package org.security;
 
import org.apache.commons.codec.digest.DigestUtils;
 
import java.util.UUID;
 
/**
 * @author 50649
 */
public class SecurityUtil {
    /**
     * 加盐加密
     *
     * @param password
     * @return
     */
    public static String encrypt(String password) {
        // 每次生成内容不同的,但长度固定 32 位的盐值
        String salt = UUID.randomUUID().toString().replace("-", "");
        // 最终密码=md5(盐值+原始密码)
        String finalPassword = DigestUtils.md5Hex((salt + password).getBytes());
        return salt + finalPassword;
    }
 
    /**
     * 密码验证
     *
     * @param password      待验证密码
     * @param finalPassword 最终正确的密码(数据库中加盐的密码)
     * @return
     */
    public static boolean decrypt(String password, String finalPassword) {
        // 非空效验
        if (null == password || null == finalPassword) {
            return false;
        }
        if (finalPassword.length() != 64) {
            // 最终密码不正确
            return false;
        }
        // 盐值
        String salt = finalPassword.substring(0, 32);
        // 使用盐值+待确认的密码生成一个最终密码
        String securityPassword = DigestUtils.md5Hex((salt + password).getBytes());
        System.out.println("securityPassword=="+securityPassword);
        // 使用盐值+最终的密码和数据库的真实密码进行对比
        return (salt + securityPassword).equals(finalPassword);
    }
 
    public static void main(String[] args) {
        String password = "123";
 
//        System.out.println(SecurityUtil.encrypt(password)); // 4d94e438ab74495a8bb2fea0bf96887d9222409880242be59dbda7265d64418b
//        System.out.println(SecurityUtil.encrypt(password)); // 942890192ad04369a1667b2b0308a2640d052e9b17d422ec8e7925e81af95470
//        System.out.println(SecurityUtil.encrypt(password)); // b8fdcdbc855a41afa7d0135304bd826e025f7d140c66342f69833578d2d64776
 
        System.out.println(SecurityUtil.decrypt(password, "4d94e438ab74495a8bb2fea0bf96887d9222409880242be59dbda7265d64418b"));
        System.out.println(SecurityUtil.decrypt(password, "942890192ad04369a1667b2b0308a2640d052e9b17d422ec8e7925e81af95470"));
        System.out.println(SecurityUtil.decrypt(password, "b8fdcdbc855a41afa7d0135304bd826e025f7d140c66342f69833578d2d64776"));
 
    }
 
}

  

posted @   红尘沙漏  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示