日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【MD5】采用MD5+盐的加密方式完成注册用户和登录账号

發布時間:2024/1/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【MD5】采用MD5+盐的加密方式完成注册用户和登录账号 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MD5的pom

<!-- 專門做MD5的加密包--><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId></dependency>

需求分析

  • 注冊用戶時,注冊的密碼在數據庫中進行加密
  • 登入用戶時,采用MD5驗證后密碼正確登錄用戶
  • 需求解決

  • 數據庫建表時,在user表中設置一個slat列,每一次注冊用戶時,生成一個獨一無二的slat(鹽)寫入數據庫slat列,并使用md5+slat的方式進行密碼加密,寫入數據庫password列。
  • 登錄用戶時,先根據userid獲得slat,輸入密碼和md5+slat加密之后得到的password和數據庫password對比,相同,則登入成功。

  • 注冊用戶代碼

    1.生成slat的工具類(自己隨便寫的,保證生成的數字不一樣就行)

    public class SlatUtile {public static Integer createSlat(){int i = new Random().nextInt();return i;} }

    2.注冊用戶mapper

    @Repository public interface AddUserMapper {@Insert("insert into user(userid,username,phonenumber,password,slat)value(#{userid},#{username},#{phonenumber},#{password},#{slat})")Integer addUser(Integer userid, String username,String phonenumber,String password,Integer slat); }

    3.注冊用戶service

    //service接口 public interface AddUserService {Integer addUser(Integer userid, String username,String phonenumber,String password,Integer slat); } @Service public class AddUserServiceImp implements AddUserService {@Autowiredprivate AddUserMapper addUserMapper;//注冊新用戶,密碼進行采用MD5+鹽加密@Overridepublic Integer addUser(Integer userid,String username,String phonenumber,String password,Integer slat) {Integer slatforthis = SlatUtile.createSlat(); //每次用戶注冊新生成一個saltString md5password = DigestUtils.md5Hex(password+slatforthis); //對密碼進行加密Integer integer = addUserMapper.addUser(userid, username, phonenumber, md5password,slatforthis);return integer;} }

    4.注冊用戶controller

    @RestController public class AddUserController {@Autowiredprivate AddUserService addUserService;@RequestMapping("adduser")public String adduser(Integer userid, String username, String phonenumber, String password,Integer slat) {Integer integer = addUserService.addUser(userid, username, phonenumber, password,slat);if (integer == 1){return "新建用戶完成";}else {return "新建用戶失敗";}} }

    5.測試

    注冊密碼為111

    ?數據庫密碼完成加密,如圖所示


    登錄用戶代碼

    首先需要個根據userid查找user的查找代碼,這里我就不寫了(為了獲取slat)

    1.登入用戶mapper

    @Repository public interface LoginMapper {@Select("select * from user where userid = #{userid} and password = #{password}")UserVO login(Integer userid,String password); }

    2.登入用戶service

    //接口層 public interface Md5LoginService {UserVO login(Integer userid, String password); } @Service public class Md5LoginServiceImp implements Md5LoginService {@Autowiredprivate LoginMapper loginMapper;@Autowiredprivate FindUserbyIdMapper findUserbyIdMapper;@Overridepublic UserVO login(Integer userid, String password) {UserVO user = findUserbyIdMapper.findUserById(userid); //根據userid查找userString salt = user.getSlat(); //獲得當前用戶的saltString md5password = DigestUtils.md5Hex(password + salt); //獲得加密密碼UserVO userVO = loginMapper.login(userid, md5password);return userVO;} }

    主要邏輯是如果輸入的未加密密碼和slat正確,加密后得到的字段和數據庫的password字段是相同的

    3.登入用戶controller

    @RestController public class Md5LoginController {@Autowiredprivate Md5LoginService md5LoginService;@RequestMapping("md5login")public UserVO md5login (Integer userid,String password){UserVO userVO = md5LoginService.login(userid, password);return userVO;} }

    4.驗證

    登入成功(密碼111)

    ?

    登入失敗,未作處理?

    總結

    以上是生活随笔為你收集整理的【MD5】采用MD5+盐的加密方式完成注册用户和登录账号的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。