最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot+MyBatis實(shí)現(xiàn)MD5加密數(shù)據(jù)庫(kù)用戶密碼的方法

 更新時(shí)間:2024年03月21日 09:57:29   作者:兩年半的個(gè)人練習(xí)生  
MD5技術(shù)主要用于對(duì)用戶密碼加密,增加賬戶的安全性,他具有不可逆的特性,不會(huì)被輕易解密,這篇文章給大家介紹SpringBoot+MyBatis實(shí)現(xiàn)MD5加密數(shù)據(jù)庫(kù)用戶密碼的方法,感興趣的朋友跟隨小編一起看看吧

MD5加密是一種常見(jiàn)的加密方式,我們經(jīng)常用在保存用戶密碼和關(guān)鍵信息上。

MD5技術(shù)主要用于對(duì)用戶密碼加密,增加賬戶的安全性,他具有不可逆的特性,不會(huì)被輕易解密

MD5用途:
1.防止被篡改                        

2.防止直接看到明文

在很多網(wǎng)站在數(shù)據(jù)庫(kù)存儲(chǔ)用戶的密碼的時(shí)候都是存儲(chǔ)用戶密碼的MD5值。

1.數(shù)據(jù)庫(kù)中創(chuàng)建User表(username,password,salt)

2.創(chuàng)建User實(shí)體類(get、set方法,有無(wú)參構(gòu)造,equals和hashCode方法)

package com.example.demo.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data                       //get,set 方法
@AllArgsConstructor         //有參構(gòu)造
@NoArgsConstructor          //無(wú)參構(gòu)造
public class User {
    private String username;
    private String password;
    private String salt;
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof User)) return false;
        User user = (User) o;
        if (getUsername() != null ? !getUsername().equals(user.getUsername()) : user.getUsername() != null)
            return false;
        if (getPassword() != null ? !getPassword().equals(user.getPassword()) : user.getPassword() != null)
            return false;
        return getSalt() != null ? getSalt().equals(user.getSalt()) : user.getSalt() == null;
    }
    @Override
    public int hashCode() {
        int result = getUsername() != null ? getUsername().hashCode() : 0;
        result = 31 * result + (getPassword() != null ? getPassword().hashCode() : 0);
        result = 31 * result + (getSalt() != null ? getSalt().hashCode() : 0);
        return result;
    }
}

3.配置數(shù)據(jù)庫(kù)連接信息(application.properties)

spring.datasource.url=jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
mybatis.mapper-locations=classpath:mapper/*.xml
#user.address.max-count=20
# 服務(wù)器向客戶端不響應(yīng)為null的屬性
#spring.jackson.default-property-inclusion=NON_NULL
# server.servlet.context-path=/store
# spring.servlet.multipart.maxFileSize=10MB
# spring.servlet.multipart.maxRequestSize=10MB

4.在資源文件中新建mapper映射文件UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper">
    <!--    注冊(cè)-->
    <insert id="addUser">
        insert into user(username,password,salt) values (#{username},#{password},#{salt})
    </insert>
</mapper>

5.創(chuàng)建mapper(dao)層新建UserMapper接口

package com.example.demo.mapper;
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper {
    void addUser(User user);
}

6.創(chuàng)建service層新建IUserService接口

package com.example.demo.service;
import com.example.demo.entity.User;
import org.springframework.stereotype.Service;
public interface IUserService {
    void addUser(User user);
}

7.重點(diǎn):MD5加密-------UserServiceImpl.java

package com.example.demo.service.Impl;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import com.example.demo.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;
import java.util.Date;
import java.util.Locale;
import java.util.UUID;
@Service
public class UserServiceImpl implements IUserService {
    @Autowired
    private UserMapper userMapper;
    @Override
    public void addUser(User user) {
        //密碼加密處理的實(shí)現(xiàn):md5算法的形式
        //串 + password + 串 ------md5算法進(jìn)行加密,連續(xù)加載三次
        //鹽值 + password + 鹽值 --------- 鹽值就是一個(gè)隨機(jī)的字符串
        String oldPassword = user.getPassword();
        //獲取鹽值(隨機(jī)生成一個(gè)鹽值)
        String salt = UUID.randomUUID().toString().toUpperCase();
        //補(bǔ)全數(shù)據(jù):鹽值的記錄
        user.setSalt(salt);
        //將密碼和鹽值作為一個(gè)整體加密處理,忽略原有密碼強(qiáng)度,提升了數(shù)據(jù)的安全性
        String md5Password = getMD5Password(oldPassword, salt);
        //將加密后的密碼重新補(bǔ)全設(shè)置到user對(duì)象中
        user.setPassword(md5Password);
        userMapper.addUser(user);
    }
    private String getMD5Password(String password,String salt){
        for (int i = 0;i <3; i++){
            //md5加密算法方法的調(diào)用(進(jìn)行三次加密)
            password = DigestUtils.md5DigestAsHex((salt+password+salt).getBytes()).toUpperCase();
        }
        //返回加密后的密碼
        return password;
    }
}

8.UserController.java

package com.example.demo.controller;
import com.example.demo.entity.User;
import com.example.demo.service.IUserService;
import com.example.demo.service.Impl.UserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
    @Autowired
    private IUserService iUserService;
    @RequestMapping("addUser")
    public String addUser(@RequestBody User user){
        System.out.println(user);
        iUserService.addUser(user);
        return "添加成功";
    }
}

9.Postman測(cè)試

 發(fā)送請(qǐng)求

到此這篇關(guān)于SpringBoot+MyBatis實(shí)現(xiàn)MD5加密數(shù)據(jù)庫(kù)用戶密碼的文章就介紹到這了,更多相關(guān)MyBatis加密數(shù)據(jù)庫(kù)密碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 內(nèi)存安全問(wèn)題的注意事項(xiàng)

    Java 內(nèi)存安全問(wèn)題的注意事項(xiàng)

    內(nèi)存安全問(wèn)題是每個(gè)程序員開(kāi)發(fā)時(shí)都需要面對(duì)的問(wèn)題,本文介紹了JVM管理內(nèi)存的原理以及內(nèi)存安全問(wèn)題需要注意的地方,有此需求的朋友可以參考下本文
    2021-06-06
  • Java編程思想對(duì)象的容納實(shí)例詳解

    Java編程思想對(duì)象的容納實(shí)例詳解

    這篇文章主要介紹了Java編程思想對(duì)象的容納實(shí)例詳解,內(nèi)容比較詳細(xì),涵蓋的東西也比較多,具有參考價(jià)值,需要的朋友了解下。
    2017-09-09
  • Spring @Value的注解使用和原理解析

    Spring @Value的注解使用和原理解析

    @Value注解在Spring開(kāi)發(fā)中是一個(gè)使用很頻繁的注解,在項(xiàng)目開(kāi)發(fā)中,我們通常需要讀取配置文件中的一些信息,當(dāng)然,@Value不單單能讀取配置文件,還能讀取系統(tǒng)屬性,還可以讀取其他bean的屬性,本章就來(lái)詳細(xì)介紹@Value注解的使用和對(duì)源碼進(jìn)行分析
    2023-06-06
  • Java中利用POI優(yōu)雅的導(dǎo)出Excel文件詳解

    Java中利用POI優(yōu)雅的導(dǎo)出Excel文件詳解

    這篇文章主要給大家介紹了關(guān)于Java中如何利用POI優(yōu)雅的導(dǎo)出Excel文件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • java 工廠模式的講解及優(yōu)缺點(diǎn)的介紹

    java 工廠模式的講解及優(yōu)缺點(diǎn)的介紹

    這篇文章主要介紹了java 工廠模式的講解及優(yōu)缺點(diǎn)的介紹的相關(guān)資料, 簡(jiǎn)單工廠模式,又稱為靜態(tài)工廠方法(Static Factory Method)模式,它屬于類創(chuàng)建型模式,需要的朋友可以參考下
    2017-08-08
  • Java如何處理json字符串value多余雙引號(hào)

    Java如何處理json字符串value多余雙引號(hào)

    這篇文章主要介紹了Java如何處理json字符串value多余雙引號(hào),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java中使用HttpPost發(fā)送form格式的請(qǐng)求實(shí)現(xiàn)代碼

    Java中使用HttpPost發(fā)送form格式的請(qǐng)求實(shí)現(xiàn)代碼

    在Java中使用HttpPost發(fā)送form格式的請(qǐng)求,可以使用Apache HttpClient庫(kù)來(lái)實(shí)現(xiàn),這篇文章主要介紹了Java中使用HttpPost發(fā)送form格式的請(qǐng)求,本文給大家展示示例代碼,需要的朋友可以參考下
    2023-08-08
  • 深入詳解Maven中的settings.xml文件配置

    深入詳解Maven中的settings.xml文件配置

    settings.xml是Maven的核心配置文件之一,用于全局配置Maven的行為,本文將為大家詳細(xì)介紹一下settings.xml文件的配置元素和配置示例,希望對(duì)大家有所幫助
    2025-10-10
  • IntelliJ IDEA 2017 漢化包及圖文教程

    IntelliJ IDEA 2017 漢化包及圖文教程

    這篇文章主要介紹了IntelliJ IDEA 2017 漢化包及圖文教程,文中給大家提供兩種方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2018-03-03
  • Spring?Boot教程之提高開(kāi)發(fā)效率必備工具lombok

    Spring?Boot教程之提高開(kāi)發(fā)效率必備工具lombok

    這篇文章主要介紹了Spring?Boot教程之提高開(kāi)發(fā)效率必備工具lombok的相關(guān)資料,需要的朋友可以參考下
    2022-08-08

最新評(píng)論

彰化市| 沂源县| 新田县| 武平县| 久治县| 新乐市| 桐乡市| 青川县| 湖口县| 甘孜县| 玉溪市| 高安市| 达尔| 柞水县| 平乡县| 商城县| 巫溪县| 巧家县| 宣威市| 盐边县| 嘉鱼县| 谷城县| 沽源县| 阿克陶县| 邯郸市| 青铜峡市| 兴国县| 八宿县| 明星| 达孜县| 通州市| 什邡市| 嘉祥县| 景泰县| 肥城市| 错那县| 托里县| 乌拉特前旗| 楚雄市| 潞城市| 民和|