如何确切地在PHP中实施洪水



我已经四处搜索,我找不到一个很好的资源,可以遍历整个实施池塘。

我正在使用5.3.8

$ 2 [x,y,a] $ [基本2的回合数] $ [某些字符串]

,但我读到的某个地方您需要每次都独特地生成盐。这是否意味着您必须将盐存储在数据库中?如果有人偷走了您的数据库,您的位置是否与使用Shax一样?所有这些工作究竟是如何工作的。

我一直在阅读该沟渠也用于解密密码。我只是为了成为散列算法,您已经理解了这一点,您可以在其中加密两个字符串,然后检查它们是否匹配。您如何以及为什么使用可以解密的算法?

盐可保护您免受彩虹桌攻击,因此可以将盐存储在同一数据库中。

本质上是彩虹桌是一张巨大的桌子,上面有数百万个预计哈希。因此,如果密码是" Some_pass",Hash为" ABC123",攻击者将在他的彩虹桌上看" ABC123",他会看到" Some_pass"正在生成此哈希。

如果您使用盐,攻击者将拥有哈希和盐,但是这张彩虹桌无法正常工作。彩虹表包含常见密码和/或1-6个(或更多)字符的所有组合。因此,如果您哈希'some_pass_ 盐_ _123123123123'您可以看到攻击者在彩虹桌上不会运气。

关于实施自己的沟渠,我希望这是为了学习(作业?)。否则,实施自己的安全算法几乎总是一个坏主意,仅仅是因为您不是域专家,并且您会错过一些晦涩的细节。

请注意,您可能还需要验证当调用crypt()时实际使用了什么加密算法。MD5不再安全,并且可以使用良好的GPU破坏(没有错字,您可以使用图形卡破坏哈希)。SHA-1已被打破,但在计算上很难做到这一点(军方可以做到);因此,不建议使用SHA-1家族。瞄准SHA-2家族。

最新更新