我一直在研读加盐和散列密码的好处,但有一件事我还是搞不懂……

当我 for each 用户提供随机的SALT时,当我try 验证他们登录时,我如何知道SALT是什么呢?

所以如果我这么做了...

HASHPW=PW.RANDOMNUMBER

我可以将随机数存储在数据库中,但这似乎扼杀了添加盐的全部意义.不是吗?我也可以 for each 盐使用一个非随机的数字,但这也会扼杀盐的要点,因为如果他们发现了这一点,他们就会拥有我所有的用户密码……

我刚开始学习PHP和MySQL,这类抽象的东西让我很困惑

谢谢!

推荐答案

这并不会 destruct 这种独特的盐储存它的目的.独一无二的SALT的意义在于保护您的entire个用户的存储库免受攻击,而不是保护给定的单个用户.如果攻击者 destruct 了您的数据库,并且决心破解特定用户的帐户,他们就会这么做.我们对此无能为力.但他们将不得不花费过多的计算机时间来这样做-足以让他们在each个用户身上花费那么多时间是不可行的-从而保护所有的用户.这与对所有用户使用相同的SALT形成对比-一旦攻击者获得SALT,就可以在相对较短的时间内针对每个用户重新运行相同的表/进程.

Database相关问答推荐

如果我想支持我的工作负载,我需要多少个 node ?

如何高效地存储棋局?

如何在华为Appcube中创建和使用对象(模型)?

生产中的超大型 Mnesia 表

Mongodb聚合$group,限制数组长度

我应该使用哪种数据库模型在运行时动态修改实体/属性?

MySQL 语法 LIMIT x, y 的 T-SQL 类似的功能是什么?

将光标中找到的值输出到logcat?

Followers/following 关注者表数据库 struct

类似 Hibernate 的 C++ 框架

微服务:每个实例或每个微服务的数据源?

为什么 MySQL 连接被许多连接错误阻止?

按最强 LIKE 排序 SQL?

来自外部源的 Django 用户和身份验证

为什么 HikariCP 推荐固定大小的池以获得更好的性能

MySQL 数据库中列名中的连字符

Select * 和 Select [列出每个列] 之间有区别吗

如何将 SQL Server 数据库图表迁移到另一个数据库?

Twisted + SQLAlchemy 和最好的方法

如何将sqlite表从磁盘数据库复制到python中的内存数据库?