当前位置 博文首页 > 一个很爱学习很爱分享的人的博客:springboot 实现Mysql使用MD5

    一个很爱学习很爱分享的人的博客:springboot 实现Mysql使用MD5

    作者:[db:作者] 时间:2021-06-11 18:10

    项目开发中为了保护用户隐私安全,一般都会用MD5进行密码加密

    以下就简单举例SpringBoot 实现Mysql使用MD5进行密码加密做一个简单的例子

    看下数据库,这边简单做了用户表进行测试

    在这里插入图片描述

    pom.xml添加依赖引用

    <!--MD5加密 对注册的密码进行加密操作-->
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>3.8.1</version>
            </dependency>
    

    创建unit包创建md5加密类,进行密码加密

    package com.wyh.unit;
    
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    /**
     * @date 2021/4/20 23:34
     */
    public class Md5Utils {
        /*
        * md5算法进行密码加密
        * */
        public static String code(String str){
            try{
                //1.获取MessageDigest对象  生成一个MD5加密计算摘要
                MessageDigest md = MessageDigest.getInstance("MD5") ;
                /*
                str.getBytes()
                * 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中.
                此方法多用在字节流中,用与将字符串转换为字节。
                * */
    
                // 计算md5函数 使用指定的字节数组更新摘要md
                md.update(str.getBytes());
                /*
                 * digest()最后确定返回md5 hash值,返回值为8的字符串。
                 * 因为md5 hash值是16位的hex值,实际上就是8位的
                 * */
                byte[] byteDigest = md.digest() ;
                int i ;
                StringBuffer buf = new StringBuffer("") ;
                //遍历byteDigest
                //加密逻辑,可以debug自行了解一下加密逻辑
                for(int offset = 0 ; offset<byteDigest.length ; offset++){
                    i = byteDigest[offset] ;
                    if(i < 0)
                        i += 256 ;
                    if(i < 16)
                        buf.append("0") ;
                    // BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值
                    buf.append(Integer.toHexString(i)) ;
                }
                return buf.toString() ;
            }catch (NoSuchAlgorithmException e){
                e.printStackTrace();
                return null ;
            }
        }
    
    }
    
    

    添加页面

    <%--
      Date: 2021/4/21
      Time: 0:04
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>添加用户</title>
    </head>
    <body>
        <form action="/addUser" method="post">
            用户名<input type="text" name="username"/><br>
            账号<input type="text" name="account"/><br>
            密码<input type="password" name="password"/><br>
            <input type="submit" value="提交">
        </form>
    </body>
    </html>
    
    

    Controller添加方法

     @RequestMapping("/addUser")
        public String addUser(User user){
            //MD5方法对密码进行加密处理
            String password= Md5Utils.code(user.getPassword()) ;
            user.setPassword(password);
            int i = userService.addUser(user);
            if(i>0){
                return "redirect:/showAllUser";
            }
           return "";
        }
    

    进行添加测试,这边我输入的密码是123456

    在这里插入图片描述

    查看数据库
    在这里插入图片描述

    进行解密可以去:https://www.cmd5.com/ 复制数据库的加密密码即可

    在这里插入图片描述