一文教你如何在数据库中安全地存储密码

前言

作者:神的孩子在歌唱
大家好,我叫智

让我们先谈谈什么不该做。

不要以 明文形式 存储密码。任何具有数据库内部访问 权限 的人都可以看到它们。如果 数据库受损
,攻击者可以轻松获取所有密码。那么,我们应该如何在数据库中安全地存储密码呢。

在这里插入图片描述

现代散列(Hash)算法。

Hash函数被普遍的应用于各类不一样的安全应用和网络协议中。

哈希 是一个 单向函数是不可逆 。不可能 解密散列 以获得 原始值 。如果 攻击者 获得
散列密码 ,他们就不能直接将其输入 应用程序 以获得 访问权限

在这里插入图片描述
目前常见的散列(Hash)算法

使用现代散列函数安全存储密码。这些函数是使用 更多资源 进行计算的 “慢”函数 。这使得 暴力攻击
效果很低。不过一些常见的传统散列函数(如 MD5和SHA-1 )是 “快速” 的。它们不太安全,不应该被使用作为加密。

网络安全攻防:密码技术之散列算法

将密码存储为单向散列是朝着正确方向迈出的一步,但这还不够。攻击者可以通过预计算要攻击 单向散列 。一些常见的攻击是 彩虹表(rainbow
table)
和基于数据库的查找。使用这些技术,黑客可以在几秒钟内破解密码,也就是会枚举很多常见的密码,一一去查找。

彩虹表:彩虹表是一个数据库,用于通过破解密码哈希来获得身份验证。

通过在散列过程中添加每个密码唯一的 salt ,可以确保散列对于每个 密码 都是唯一的。加上盐后需要穷举 密码+salt
的所有组合,这个 计算量 就相当大了,想要 破解 已经比较难了。

什么是彩虹表(Rainbow Table)

在这里插入图片描述

计算机系统中的密码不是直接存储为纯文本,而是使用加密进行哈希处理。哈希函数是单向函数,这意味着它不能被解密。每当用户输入密码时,密码都会转换为哈希值,并与已存储的哈希值进行比较。如果值匹配,则对用户进行身份验证。

加盐密码

salt 是唯一的随机生成的字符串,作为 散列过程的一部分 添加到每个密码中。

在这里插入图片描述

首先将用户提供的 密码随机生成的salt 相结合。然后,我们使用适当的 散列函数计算 该组合的 散列
。散列与盐一起存储在 数据库 中。同样,salt用于生成唯一散列。它不是秘密,可以作为纯文本安全存储在数据库中。

在这里插入图片描述

当用户登录时,我们如何根据数据库中存储的内容验证密码?首先,我们从数据库中获取用户的salt。然后,我们将salt附加到用户提供的密码并对其进行散列。我们将计算出的散列与数据库中存储的散列进行比较。如果它们相同,则密码有效。

在这里插入图片描述

本人csdn博客:https://blog.csdn.net/weixin_46654114
转载说明:跟我说明,务必注明来源,附带本人博客连接。

学习计划安排


我一共划分了六个阶段,但并不是说你得学完全部才能上手工作,对于一些初级岗位,学到第三四个阶段就足矣~

这里我整合并且整理成了一份【282G】的网络安全从零基础入门到进阶资料包,需要的小伙伴可以扫描下方CSDN官方合作二维码免费领取哦,无偿分享!!!

如果你对网络安全入门感兴趣,那么你需要的话可以

点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

①网络安全学习路线
②上百份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥HW护网行动经验总结
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析

  • 17
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值