我一直在阅读有关密码哈希函数的内容,并且说:使用salt来加强黑客的工作,使用高度成本算法等 我找到了这个password_hash函数,但是......它返回了这个(字母是一个解释的例子)
AAAACCCSSS .... SSSHHH ..... HHHH
示例:
其中:
我认为(我认为)算法,成本和盐用于使黑客的生活变得更加困难,如果我使用它,我的哈希会更安全
但是,如果我使用了所有这些,但我告诉黑客我正在使用这种盐,算法和成本会发生什么?
这样做我给了黑客很多线索
我的意思是,
我可以在我的数据库中存储所有字符串吗?
或
我必须将哈希和(算法,成本,盐)存储在不同的地方吗?
如果有人拿到我的数据库,他就拥有所有哈希密码。
答案 0 :(得分:1)
安全性不是来自秘密信息。它来自于计算成本非常高的算法。
这里的攻击是猜测一个明文,当用给定的算法和盐和成本进行散列时,将产生相同的散列值。即使提供了所有信息(明显除了明文)并假设有一个强大的(随机)明文密码,也需要很多年,可能千年来找到一个这样的值。这只是一个密码哈希,更不用说整个哈希数据库了。
保护是使用足够昂贵的算法使猜测不可能慢,而不是保持算法的细节(盐和成本是秘密的)。
答案 1 :(得分:1)
salt的目的是确保哈希是唯一生成的,并且无法在现有数据库(例如MD5 Decrypt)中查找。即使盐被泄露,攻击者也必须单独破坏每个哈希密码。
我可以在我的数据库中存储所有字符串吗?
是的,您可以像WordPress一样将其存储在数据库中。
如果有人拿到我的数据库,他就拥有所有哈希密码。
是的,但正如我所提到的,除非密码是使用蛮力单独破解的,否则哈希是没用的,这会花费大量的计算成本。