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

采用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;}}

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

  1. ServU 11 以上版本的数据库用户关联 密码加密原理

    ServU 6.4 无疑是一个受人青睐的版本. 长久不用的东西,也真当忘记得快 现在配置过ServU 6.4的数据库连接,现在到了11版就不知道怎么处理了...网上的教程也尽是6.4等老版本的.摸索了 ...

  2. SQLSERVER使用密码加密备份文件以防止未经授权还原数据库

    SQLSERVER使用密码加密备份文件以防止未经授权还原数据库 原文:SQLSERVER使用密码加密备份文件以防止未经授权还原数据库 SQLSERVER使用密码加密备份文件以防止未经授权还原数据库 在 ...

  3. java web项目中对数据库用户名密码加密的一种解决方案

    原文路径:https://blog.csdn.net/u010463032/article/details/7900906 我们使用的项目经常是这个样子的: <bean id="dat ...

  4. Spring Security入门(三):密码加密

    前文导读 - Spring Security入门(一):登录与退出 - Spring Security入门(二):基于数据库验证 Github 地址 https://github.com/ChinaS ...

  5. java excel md5_常用模块(4)操作数据库,MD5(加密),写excel

    1.加密模块 import hashlib m = hashlib.md5() #print(m.__doc__)#用来查看帮助文档 有哪些方法之类 # bytes passwd = 'NHY_*&a ...

  6. 登录账号骗服务器,如何伪装成宽带拨号服务端来骗取拨号设备的账号和密码

    先想想为什么我们要干这件事,像我只是换路由器的时候忘记了宽带的拨号账号和密码才这么干.至于你可能想着去搞IPTV盒子的账号密码或者是别人的路由器拨号账号密码,这种坏事我绝对没想过. 想要骗得宽带拨号的 ...

  7. mysql数据库表添加加密密码_数据库账号密码加密详解及实例

    数据库账号密码加密详解及实例 数据库中经常有对数据库账号密码的加密,但是碰到一个问题,在使用UserService对密码进行加密的时候,spring security 也是需要进行同步配置的,因为sp ...

  8. SSM数据库账号密码加密

    使用SSM框架开发WEB项目时,数据库的账号密码一般会写在dbconfig.properties里,为了做到保护版权等效果,要对数据库账号密码进行加密,一共有分为三步. 一.创建DESUtil类 提供 ...

  9. Mysql数据库账号密码加密

    数据库密码加密解密 1.引入依赖 <dependency><groupId>com.github.ulisesbocchio</groupId><artifa ...

最新文章

  1. Django使用Social-Auth实现微信第三方网站扫码登录
  2. Run-Time Check Failure #2 - S
  3. 真正完美攻略之星月夜~Seven Tales in Spiral(中国同人文字AVG)
  4. mysql user表修复_Mysql user表root用户误删除后恢复
  5. 关于移动端的一些tip
  6. MVC area出现“找到多个与名为“Home”的控制器匹配的类型”错误的解决方法
  7. 四、RabbitMQ消息消费时的权衡
  8. delphi在linux运行,实现了delphi unigui跑在linux上
  9. angular获取当前路由信息
  10. C# 30分钟完成百度人脸识别——进阶篇(文末附源码)
  11. SAP ABAP 热咖啡报表模板
  12. 2.计算机二级考试 公共基础知识资料
  13. 计算机毕业设计ssm大学生科技活动报名系统2h1ir系统+程序+源码+lw+远程部署
  14. 斗鱼弹幕服务器第三方接入协议,GitHub - qianjiachun/douyu-point: 为你的斗鱼直播间增加积分功能吧!...
  15. 占Android的发展
  16. 可编程的SQL是什么样的?
  17. PCIe各版本结构剖析
  18. 鸟哥私房菜(第四版-2015/4)
  19. 水果店怎么摆放吸引客户,水果店堆头怎么摆放吸引人
  20. Excel导入数据时间格式问题处理

热门文章

  1. service mesh解决的几个问题
  2. 关于AppInventor之gzjkw.net版本的电脑模拟器用法
  3. linux服务器上查看显卡(nvidia)型号
  4. 【实战教程】使用知晓云完成微信卡券消息的处理
  5. 降噪蓝牙耳机评测排行榜最新,综合表现好的降噪蓝牙耳机分享
  6. 牛客小白月赛28 C-单词记忆方法——dfs
  7. 字节跳动40W大数据开发岗,面试也不过如此
  8. Striped64 api详解
  9. hwd分别是长宽高_DS-2CD7A87HWD-XZS 海康威视800万AI人脸抓拍比对筒型网络摄像机
  10. 说说你对keep-alive的理解是什么?