番外篇:SpringBoot 用戶注冊時經MD5加密存入數據庫


Springboot+Mybatis+redis+postman項目實戰總目錄*

番外篇:SpringBoot 用戶注冊時經MD5加密存入數據庫

 

工具:

idea2019 

Mysql

前端模擬:postman

加密算法:MD5

我們日常登陸時,為確保密碼的安全性,我們需要在前端將用戶設置的密碼進行加密,然后傳輸到后台數據進行存儲,這里需要主義的時,我們在頁面上進行加密后由后台程序進行解密,得到原始的密碼,接着用另一種方法對密碼再次進行加密,然后存儲到數據庫中。這里為啥要加密解密再加密呢?是因為我們的前后端加密算法不能一樣,因為如果一樣的額話,前端加密算法在頁面上是可以通過源碼查到的,所以我們的后端如果用同樣的加密算法的話,這個加密過程就相當於沒有加密,所以我們現在要來實現的就是第二個階段,后端對原始密碼進行加密的功能。首先做一下基礎工作。

一、准備工作

1. 導入加密依賴

<!--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>

2. 加密工具類Md5Utils的設計與實現,每個步驟都有詳細的講解與介紹。

/**
 * @author yeyuting
 * @create 2021/1/19
 */
public class Md5Utils {

    /**
    *2021/1/19 14:37
    * * @param str
    * * @return : java.lang.String
    */
    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 ; } } }

二、這樣一來,准備工作就做好了,現在來進行業務層代碼實現

1. controller層:

@PostMapping("/addUser")
    public Result addUser(@RequestBody User user) { String password = Md5Utils.code(user.getPassword()) ; System.out.println(password); user.setPassword(password); userService.insertOne(user) ; return Results.success("成功注冊") ; }

2. service層:

/*
     * 新增一個用戶
     * */
    public Integer insertOne(User user);
 @Override
    public Integer insertOne(User user){ return userMapper.insertOne(user); }

3. dao層:

 public Integer insertOne(User user);

xml文件:

<insert id="insertOne">
        insert into sys_user(id,username,password)
            values(#{id},#{userName},#{password})
    </insert>

三、這樣一來,代碼邏輯部分就設計好了,接下來啟動項目,利用post模擬前端傳輸數據

 

 

測試結果如下: 

數據庫表數據如下:

 

 

從數據庫可知,數據庫中成功插入一條數據,且該數據的密碼也經過了加密,如此一來,MD5加密算法就介紹完了。

至此,結束。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM