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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

MD5的pom

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

需求分析

  • 注冊(cè)用戶時(shí),注冊(cè)的密碼在數(shù)據(jù)庫中進(jìn)行加密
  • 登入用戶時(shí),采用MD5驗(yàn)證后密碼正確登錄用戶
  • 需求解決

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

  • 注冊(cè)用戶代碼

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

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

    2.注冊(cè)用戶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.注冊(cè)用戶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;//注冊(cè)新用戶,密碼進(jìn)行采用MD5+鹽加密@Overridepublic Integer addUser(Integer userid,String username,String phonenumber,String password,Integer slat) {Integer slatforthis = SlatUtile.createSlat(); //每次用戶注冊(cè)新生成一個(gè)saltString md5password = DigestUtils.md5Hex(password+slatforthis); //對(duì)密碼進(jìn)行加密Integer integer = addUserMapper.addUser(userid, username, phonenumber, md5password,slatforthis);return integer;} }

    4.注冊(cè)用戶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.測(cè)試

    注冊(cè)密碼為111

    ?數(shù)據(jù)庫密碼完成加密,如圖所示


    登錄用戶代碼

    首先需要個(gè)根據(jù)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); //根據(jù)userid查找userString salt = user.getSlat(); //獲得當(dāng)前用戶的saltString md5password = DigestUtils.md5Hex(password + salt); //獲得加密密碼UserVO userVO = loginMapper.login(userid, md5password);return userVO;} }

    主要邏輯是如果輸入的未加密密碼和slat正確,加密后得到的字段和數(shù)據(jù)庫的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.驗(yàn)證

    登入成功(密碼111)

    ?

    登入失敗,未作處理?

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。