当前位置: 首页 > news >正文

MD5+盐保存密码

特点:

  •   MD5加密没有反向的解密算法。
  •   MD5加密算法对于一个字符串多次运算得到的结果是一样的。只要字符串改变了一个任意字符,得到的密文与源字符的密文是完全不一样的。

主要作用:

在用户注册时,会将密码进行MD5加密,存到数据库中,这样可以防止数据库被恶意攻击得到用户的密码信息。

MD5+盐原理:

//例如用户输入密码为123456
String password="123456";
// 在密码后面随机加一个数字进行拼串后再使用MD5算法进行加密
String str= DigestUtil.md5Hex(password+1);
System.out.println(str);  //aaa42296669b958c3cee6c0475c8093e
//在加密后的密码前面加上刚才的随机数进行拼串,并将此串当成密码保存在数据库
String str2=1+str;
System.out.println(str2); //1aaa42296669b958c3cee6c0475c8093e
//当要进行登陆的的时候,将用户输入的密码按上面的规则进行加密,
//将加密后的密码和数据库中保存的密码进行对比
//先从数据库的密码中取到盐
String str3=str2.substring(0,1);
//例如用户输入的密码就是123456
String str4=DigestUtil.md5Hex("123456"+str3);
String str5=str3+str4;
//判断密码是否一致
System.out.println(str5.equals(str2));  //true

糊涂工具包已经将MD5+盐封装成方法:

//使用MD5+盐的方式进行加密,没有第二个参数就是随机盐,有第二个参数就是指定盐,第二个参数就是盐
String str9=BCrypt.hashpw("123456");
System.out.println(str9); //$2a$10$oubciGXH1pEh/8BX2w05ze8/em/pzEscFC97m4fCiZ.9atTTSwd0u
//校验密码,前面为用户输入的,后面是自己存储的
System.out.println( BCrypt.checkpw("123456",str9)); //true

http://www.xdnf.cn/news/644869.html

相关文章:

  • 用VMWare架飞牛nas 启用Intel千兆网卡
  • 人工智能导论复习 第一、二章
  • 从零开始上传预印版论文到 arXiv
  • SciPy是什么?是一个开源的 Python 算法库和数学工具包
  • 怎么判断股指期货空头增仓和多头增仓呢?
  • C++ 定义一个结构体,用class还是struct
  • DAY35作业
  • AI 赋能心理健康预测与干预:智能技术如何成为情绪“守护者”
  • 【分库分表】理论基础
  • Python训练营打卡Day36
  • YOLO11解决方案之区域追踪探索
  • Python二级考试
  • SOC-ESP32S3部分:12-1、任务通信-队列
  • 类和对象简要小记
  • 大模型应用开发之RAG
  • 【python】OOP编程从0到1
  • 前端常见的安全问题
  • 【监控】Node Exporter 介绍及应用
  • QT6安装与概念介绍
  • 30字速成Docker安装与配置指南
  • 【Web前端】ECMAScript 6基础学习
  • HTTP协议版本的发展(HTTP/0.9、1.0、1.1、2、3)
  • MySQL并发事务问题及隔离级别演示
  • 蓝桥杯单片机答题技巧
  • DNS 入门篇
  • Arduino Uno KY-037声音传感器实验
  • 短视频矩阵系统源码部署分享
  • 维护测试监控LLM应用
  • 从厨房到储物间:Grocy 家庭的智能物资管理助手
  • CA自签名证书创建--证书链生成脚本