1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 关于数据库账号和密码加密问题

关于数据库账号和密码加密问题

时间:2021-04-17 13:57:04

相关推荐

关于数据库账号和密码加密问题

关于数据库账号和密码加密的问题

采用md5进行加密

md加密是不可逆。但是现在md5可以被破解,怎么办?加盐处理

package com.mon.utils.pwd;import java.math.BigInteger;import java.security.MessageDigest;public class MD5Util {public MD5Util() {}public static String md5(String str) {try {MessageDigest md5 = MessageDigest.getInstance("MD5");md5.update(str.getBytes("UTF-8"));return bytesToHex(md5.digest());} catch (Exception var2) {throw new RuntimeException(var2);}}public static String md5slat(String str) {return MD5Util.md5(MD5Util.md5("kuangstudy" + str + "02170318!!!"));}public static String bytesToHex(byte[] bytes) {BigInteger bigInt = new BigInteger(1, bytes);String hashtext;for (hashtext = bigInt.toString(16); hashtext.length() < 32; hashtext = "0" + hashtext) {}return hashtext;}public static void main(String[] args) {System.out.println(md5slat("123456"));}}

生成一个加密的密码存于数据库,先进行测试:比如:123466 得到的密码:6f69bc15a78e679021ceef633f5d5d55

正规的加密流程 - 注册过程

开发注册功能,让用户填写账号和密码

发起异步请求,把用户填写的账号和密码,传递给服务端

服务端对密码password = Md5Util.md5slat(password) 存入数据库

登录过程:

js—加密 —java解密

用户输入账号和密码(js—enpwd(123456) – 1sdkn23hsdb)—劫持()

对输入过来的账号和密码。然后对密码进行password = Md5Util.md5slat((depwd(1sdkn23hsdb)))

然后把用户输入的密码加密以后和数据库的密码进行对比,如果相同,就登录成功,如果不同就登录失败。

登录代码比较

package com.pug.zixun.controller.login;import com.pug.zixun.bo.UserBo;import com.mon.enums.AdminUserResultEnum;import com.mon.ex.PugValidatorException;import com.mon.utils.pwd.MD5Util;import com.pug.zixun.config.BaseController;import com.pug.zixun.config.jwt.JwtService;import com.pug.zixun.config.validator.PugAssert;import com.pug.zixun.domain.User;import com.pug.zixun.service.user.IUserService;import com.pug.zixun.vo.UserVo;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RestController;/*** @author 飞哥* @Title: 学相伴出品* @Description: 飞哥B站地址:/490711252* 记得关注和三连哦!* @Description: 我们有一个学习网站:* @date /5/13$ 21:30$*/@RestController@Slf4jpublic class PassportLoginController extends BaseController {@Autowiredprivate IUserService userService;@Autowiredprivate JwtService jwtService;/*** 登录** @param userVo* @return*/@PostMapping("/login/toLogin")public UserBo logined(@RequestBody UserVo userVo) {// 这里有校验,spring-validator框架来完成 或者用断言 或者用自己封装的PugAssert.isEmptyEx(userVo.getUsername(), AdminUserResultEnum.USER_NAME_NOT_EMPTY);PugAssert.isEmptyEx(userVo.getPassword(), AdminUserResultEnum.USER_PWD_NOT_EMPTY);// 根据用户名称查询用户信息User dbLoginUser = userService.login(userVo);PugAssert.isNullEx(dbLoginUser, AdminUserResultEnum.USER_NULL_ERROR);// 用户输入的密码String inputPwd = MD5Util.md5slat(userVo.getPassword());// 如果输入密码和数据库密码不一致boolean isLogin = dbLoginUser.getPassword().equalsIgnoreCase(inputPwd);// 如果输入的账号和有误,isLogin=false.注意isFalseEx在里面取反的,所以会抛出异常PugAssert.isFalseEx(isLogin,AdminUserResultEnum.USER_INPUT_USERNAME_ERROR);UserBo userBo = new UserBo();// 根据用户生成tokenString token = jwtService.createToken(dbLoginUser.getId());userBo.setToken(token);// 注意把一些敏感信息全部清空返回dbLoginUser.setPassword(null);userBo.setUser(dbLoginUser);return userBo;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。