关于数据库账号和密码加密问题
关于数据库账号和密码加密的问题
采用md5进行加密
md加密是不可逆。但是现在md5可以被破解,怎么办?加盐处理
package com.pug.zixun.common.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 + "202102170318!!!"));}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.pug.zixun.common.enums.AdminUserResultEnum;
import com.pug.zixun.common.ex.PugValidatorException;
import com.pug.zixun.common.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站地址:https://space.bilibili.com/490711252* 记得关注和三连哦!* @Description: 我们有一个学习网站:https://www.kuangstudy.com* @date 2022/5/13$ 21:30$*/
@RestController
@Slf4j
public 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;}}
关于数据库账号和密码加密问题相关推荐
- ServU 11 以上版本的数据库用户关联 密码加密原理
ServU 6.4 无疑是一个受人青睐的版本. 长久不用的东西,也真当忘记得快 现在配置过ServU 6.4的数据库连接,现在到了11版就不知道怎么处理了...网上的教程也尽是6.4等老版本的.摸索了 ...
- SQLSERVER使用密码加密备份文件以防止未经授权还原数据库
SQLSERVER使用密码加密备份文件以防止未经授权还原数据库 原文:SQLSERVER使用密码加密备份文件以防止未经授权还原数据库 SQLSERVER使用密码加密备份文件以防止未经授权还原数据库 在 ...
- java web项目中对数据库用户名密码加密的一种解决方案
原文路径:https://blog.csdn.net/u010463032/article/details/7900906 我们使用的项目经常是这个样子的: <bean id="dat ...
- Spring Security入门(三):密码加密
前文导读 - Spring Security入门(一):登录与退出 - Spring Security入门(二):基于数据库验证 Github 地址 https://github.com/ChinaS ...
- java excel md5_常用模块(4)操作数据库,MD5(加密),写excel
1.加密模块 import hashlib m = hashlib.md5() #print(m.__doc__)#用来查看帮助文档 有哪些方法之类 # bytes passwd = 'NHY_*&a ...
- 登录账号骗服务器,如何伪装成宽带拨号服务端来骗取拨号设备的账号和密码
先想想为什么我们要干这件事,像我只是换路由器的时候忘记了宽带的拨号账号和密码才这么干.至于你可能想着去搞IPTV盒子的账号密码或者是别人的路由器拨号账号密码,这种坏事我绝对没想过. 想要骗得宽带拨号的 ...
- mysql数据库表添加加密密码_数据库账号密码加密详解及实例
数据库账号密码加密详解及实例 数据库中经常有对数据库账号密码的加密,但是碰到一个问题,在使用UserService对密码进行加密的时候,spring security 也是需要进行同步配置的,因为sp ...
- SSM数据库账号密码加密
使用SSM框架开发WEB项目时,数据库的账号密码一般会写在dbconfig.properties里,为了做到保护版权等效果,要对数据库账号密码进行加密,一共有分为三步. 一.创建DESUtil类 提供 ...
- Mysql数据库账号密码加密
数据库密码加密解密 1.引入依赖 <dependency><groupId>com.github.ulisesbocchio</groupId><artifa ...
最新文章
- Django使用Social-Auth实现微信第三方网站扫码登录
- Run-Time Check Failure #2 - S
- 真正完美攻略之星月夜~Seven Tales in Spiral(中国同人文字AVG)
- mysql user表修复_Mysql user表root用户误删除后恢复
- 关于移动端的一些tip
- MVC area出现“找到多个与名为“Home”的控制器匹配的类型”错误的解决方法
- 四、RabbitMQ消息消费时的权衡
- delphi在linux运行,实现了delphi unigui跑在linux上
- angular获取当前路由信息
- C# 30分钟完成百度人脸识别——进阶篇(文末附源码)
- SAP ABAP 热咖啡报表模板
- 2.计算机二级考试 公共基础知识资料
- 计算机毕业设计ssm大学生科技活动报名系统2h1ir系统+程序+源码+lw+远程部署
- 斗鱼弹幕服务器第三方接入协议,GitHub - qianjiachun/douyu-point: 为你的斗鱼直播间增加积分功能吧!...
- 占Android的发展
- 可编程的SQL是什么样的?
- PCIe各版本结构剖析
- 鸟哥私房菜(第四版-2015/4)
- 水果店怎么摆放吸引客户,水果店堆头怎么摆放吸引人
- Excel导入数据时间格式问题处理