后端面试之系统设计 - 用户密码如何储存在DB里

本文探讨了密码安全储存的方法,包括避免明文存储,使用对称加密和非对称加密的风险,以及MD5等Hash函数加密的优缺点。重点讲述了加盐(Salt)的MD5方法和Bcrypt算法,强调加盐可以抵抗彩虹表攻击,而Bcrypt的慢哈希特性增加了破解难度,确保了密码的安全性。
摘要由CSDN通过智能技术生成

原文地址:码农在新加坡的个人博客

背景

现在很多网站都因为爆库导致密码泄漏,要设计怎么样的密码储存机制,才能保证最大限度的不被盗取,即使数据泄漏,黑客也无法在短时间内获取对应的密码来登录用户的账号,而造成损失。

这篇博客就来讲解密码储存的过程。

明文储存密码

username password
aaa 123456
bbb qwerty
ccc password
ddd 111111

假设我们有一张用户表,储存usernamepassword,密码我们是明文储存的。为什么这么不安全呢?

  1. 如果遭遇数据泄漏事件,明文密码将用户隐私完全暴露,任何人都可以登录暴露密码的账号,随意更改。
  2. 密码容易被网站的内部人员得知并获取;也就是内部员工也可以轻易访问用户的明文密码。可能会做一些违法的事情,所以网站基本不会明文储存密码。

当然也有例外,看下这个条新闻:

Hundreds of millions of Facebook users had their account passwords stored in plain text and searchable by thousands of Facebook employees — in some cases going back to 2012, KrebsOnSecurity has learned. Facebook says an ongoing investigation has so far found no indication that employees have abused access to this data.

Facebook 明文存储用户密码,大约有2亿~6亿的用户受到影响,预计超过2万名Facebook员工可检索这些村文本密码 Facebook Stored Hundreds of Millions of User Passwords in Plain Text for Years

所以说,明文储存密码是很不安全的,正常来说现在没有人会这么用。(以前经常还会爆出来)

用对称加密或者非对称加密函数加密储存密码

我想大部分人都了解对称加密和非对称加密,那么用这两种加密算法可不可行呢?
在这里插入图片描述

对称加密

在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。

密钥需要安全储存,否则就有严重的泄漏风险。

非对称加密

非对称加密是一份明文

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值