MD5 Hash + Salt的密码存储方式实现

2023-11-11

    MD5算法是一种密码散列算法,MD5散列后的数据长度为128 bit,该散列算法在密码上使用得非常多。但现在已经被更安全的SHA-1代替,MD5算法产生的密码可以使用反向查询的方式从预先算出的密码MD5库中查到密码,网上的一些MD5库中大约有上亿到上百亿条密码数据。针对这种破解方式,对密码在存储过程中经过Salt,即加盐后存储的方式可以有效增加反向查询的难度。

    Salt(盐值)是一组随机数据,长度为几个字节,比较安全的密码存储算法要求盐值至少在8 Bytes以上。盐值的产生要求使用安全的随机数算法,例如Java中使用SecureRandom算法产生的随机数就是安全的随机数算法。

    MD5 Hash + Salt存储密码的过程如下:

  1. 产生Salt值,即使用安全随机数算法,产生随即盐值,最好直接产生随机Byte,安全的密码要求盐值在8 Bytes以上。
  2. 将用户密码的Bytes与盐值的Bytes组合在一起,形成Password + Salt或Salt + Password的Bytes数组。Password和Salt顺序任意,但解密时也要相同顺序。
  3. 对上述Password + Salt计算MD5值,得到MD5的Bytes
  4. 见Salt与上述算出的MD5 Bytes组合在一起,成为 Salt + MD5 Bytes
  5. 使用Base 64算法或转为16进制字符串的方式将上述组合后的Bytes转换成为字符串,转换之后即可存储到数据库中。
上述Hash + Salt的密码存储方式是比较有效的对抗从MD5库中查询到密码的方式,在大型系统使用较多。如果需要在更加安全的场合使用,可以将MD5算法更改为SHA-1算法,增加Salt值的长度等方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MD5 Hash + Salt的密码存储方式实现 的相关文章

随机推荐

  • 【Detectron2】使用 Detectron2 训练基于 coco 数据集的目标检测网络

    文章目录 一 安装 Detectron2 二 软连接 coco 数据集 三 训练 四 数据集相关参数 五 输出结果路径 六 COCO 数据集简介 七 模型相关参数 八 可视化结果 一 安装 Detectron2 初次接触 Detectron
  • TypeScript基础之元组(Tuple)

    元组 我们知道数组中元素的数据类型都一般是相同的 any 类型的数组可以不同 如果存储的元素数据类型不同 则需要使用元组 元组是一种数据类型 可以像任何其他变量一样使用 它表示值的异构集合 也可以作为函数调用中的参数传递 在抽象数学中 术语
  • [Android] 给图像添加相框、圆形圆角显示图片、图像合成知识

    前一篇文章讲述了Android触屏setOnTouchListener实现突破缩放 移动 绘制和添加水印 继续我的 随手拍 项目完成给图片添加相框 圆形圆角显示图片和图像合成的功能介绍 希望文章对大家有所帮助 一 打开图片和显示assets
  • 博途V16软件官方下载和安装

    获取博途软件的途径很多 且有各种版本和各种形式的安装包 不可否认这些都是同行们共同努力为我们获取的资源 但这些安装包大多以百度网盘的途径下载 由于安装包很大且百度网盘限速 就很不方便我们获取博途的安装包文件 为此 向大家介绍如何通过西门子官
  • vue scoped 解决样式不生效问题

    对于添加样式不能影响子组件样式的情况使用 gt gt gt
  • 精卫填海——大数据安全与隐私保护

    第一章 绪论 一 课程内容 1 大数据安全 如何在满足可用性的前提下实现大数据机密性 安全与效率之间的平衡一直信息安全领域关注的重要问题 在大数据场景下 数据的高速流动特性以及操作多样性使得数据的安全与效率之间的矛盾更加突出 如何实现大数据
  • LeetCode刷题-21. 合并两个有序链表(python)

    将两个有序链表合并为一个新的有序链表并返回 新链表是通过拼接给定的两个链表的所有节点组成的 示例 输入 1 gt 2 gt 4 1 gt 3 gt 4 输出 1 gt 1 gt 2 gt 3 gt 4 gt 4 方法一 递归 Definit
  • java操作kafka读写操作

    1 前提 kafka 的 server properties里面开通了 listeners PLAINTEXT 192 168 137 141 9092 advertised listeners PLAINTEXT 192 168 137
  • ffmpeg在接收UDP网络协议流时在链接上通过fifo_size进行缓冲大小的设置

    If you original URL looks like this udp 239 1 1 7 5107 Add the fifo size and overrun parameters like this udp 239 1 1 7
  • 云服务器配置域名直接访问项目

    我使用的是阿里云服务器和域名 关于云服务器和域名的购买就不一一赘述了 主要讲解云服务器配置域名及使用域名访问项目 一 云服务器配置域名 1 在云服务器 ECS中搜索域名 找到域名控制台点进去 2 进去域名列表页面 然后点击域名后面的 解析
  • 宝塔linux忘记端口号,Bt(宝塔面板)忘记用户名、密码、端口的解决方案

    Bt 宝塔面板 用的人还是很多的 但是有的时候不注意忘掉了用户名和密码我们这时候要分两种情况 如果是面板刚安装好 不小心关掉了ssh工具 然后忘掉了初始的用户名和密码 或者就是在后台已经更改过了用户名和密码 但是忘记了 那应该怎么解决呢 下
  • Word:显示文档修改痕迹

    1 显示文档修改痕迹 当对word文档修改 我们想要在word中显示修改的痕迹 怎么设置 在文档顶端找到 审阅 修订 即可 具体高级设置 点击 修订 下三角 结果如下
  • nohup 命令之 nohup: ignoring input and appending output to ‘nohup.out’

    当我在linux中使用nohup 命令的时候 出现了这个错误 nohup ignoring input and appending output to nohup out 忽略输入输出 将信息化信息记录到nohup out文件中 补充 no
  • Vue3 学习

    基础 js https www bilibili com video BV15T411j7pJ spm id from 333 337 search card all click vd source 9747207be61edfe4ec62
  • 中标麒麟V7系统开启日志服务器收集日志

    0 备份 编辑配置文件 cp etc rsyslog conf etc rsyslog conf bak20210427 vi etc rsyslog conf 1 修改服务端配置 打开服务监听端口 MODULES The imjourna
  • UV纹理与贴图

    文章转载自 http www cnblogs com jenry p 4083415 html 1 什么是UV 对于三维模型 有两个最重要的坐标系统 一是顶点的位置 X Y Z 坐标 另一个就是UV坐标 什么是UV 简单的说 就是贴图影射到
  • 旋转后计算法线

    11
  • base64 编码转png上传minio

    public static InputStream base64ConvertPNG String base64 BASE64Decoder decoder new BASE64Decoder 解码 base64 base64 replac
  • opencv 中findContours函数介绍

    opencv4 中findContours函数介绍 findContours 这个函数的主要功能是找到contours也就是边界线 不过这个函数主要是给灰度图对象服务的 函数的使用介绍 findContours image mode met
  • MD5 Hash + Salt的密码存储方式实现

    MD5算法是一种密码散列算法 MD5散列后的数据长度为128 bit 该散列算法在密码上使用得非常多 但现在已经被更安全的SHA 1代替 MD5算法产生的密码可以使用反向查询的方式从预先算出的密码MD5库中查到密码 网上的一些MD5库中大约