在PHP中使用blowfish存储密码
这整个密码学的事情是很难接受的,但它真的很有趣,我最近一直在读它 我的问题是关于使用河豚来散列存储密码。我知道需要盐,但我不确定该怎么做。我有一些问题在PHP中使用blowfish存储密码,php,mysql,hash,passwords,blowfish,Php,Mysql,Hash,Passwords,Blowfish,这整个密码学的事情是很难接受的,但它真的很有趣,我最近一直在读它 我的问题是关于使用河豚来散列存储密码。我知道需要盐,但我不确定该怎么做。我有一些问题 我读过很多教程,人们似乎只是随机地想出了一个像“oidsjf03”这样的教程,并将其用于他们所有的盐。他们只是把键盘弄碎了还是怎么了 我也读过很多书,说每个密码都应该有一个唯一的散列。因此,我为存储的每个密码生成一个单独的salt。那我就得把它放在某个地方。然而,在哪里?如果我只是把它作为一个条目存储在用户的行中,如果数据库被破坏,他们能不能用这
uniqid()
功能足够了吗?还是我应该做一些有趣的事情uniqid()
功能足够了吗?还是我应该做一些有趣的事情
从PHP5.5开始,已直接构建到PHP中。同时,请参见上述链接,注释中有一个指向Github项目的链接,该项目与这些函数向前兼容,可用于PHP>=5.3.7
6-最后,我听说phpass提到了很多关于它的安全性的问题,以及用户应该如何使用它,而不是自己潜在地犯错误。这真的是推荐的做法吗
内置PHP函数更好,因为一旦发现任何安全漏洞,它们将始终保持最新状态。我会用它们来代替。然而,phpass是一个非常好的选择
1-我读过很多教程,人们似乎只是随机地想出了一个像“oidsjf03”这样的教程,并将其用于他们所有的盐。他们只是把键盘弄碎了还是怎么了
什么都用同样的盐是个坏主意。句号
2-我也读过很多关于每个密码都应该有一个唯一的散列的文章。因此,我为存储的每个密码生成一个单独的salt。那我就得把它放在某个地方。然而,在哪里?如果我只是把它作为一个条目存储在用户的行中,如果数据库被破坏,他们能不能用这个salt生成rainbow表
盐是杂烩的一部分。彩虹表仅在多个用户使用同一种盐时才起作用。但它们都是独一无二的,对吗?所以用散列存储它是可以的。第三条也是如此
4-你如何为哈希生成盐?PHP的uniqid()
功能足够了吗?还是我应该做一些有趣的事情
从PHP5.5开始,已直接构建到PHP中。同时,请参见上述链接,注释中有一个指向Github项目的链接,该项目与这些函数向前兼容,可用于PHP>=5.3.7
6-最后,我听说phpass提到了很多关于它的安全性的问题,以及用户应该如何使用它,而不是自己潜在地犯错误。这真的是推荐的做法吗
内置PHP函数更好,因为一旦发现任何安全漏洞,它们将始终保持最新状态。我会用它们来代替。但是phpass是一个很好的选择。除了上面的答案,您还可以在DB BR中使用哈希保存salt,因为如果您的DB被破坏,攻击者需要知道您的salt算法。如hash($pass.$salt)或hash($pass.$salt)等。除上述答案外,您还可以将salt与hash一起保存在DB br中,因为如果您的DB遭到破坏,攻击者需要了解您的salt算法。像hash($pass.$salt)或hash(hash($pass.$salt)等。Re:#3,salt应该每个用户分开的原因是,如果多个用户使用相同的密码(“secret1”),他们就不会有相同的hash-攻击者无法判断他们都在使用相同的密码,他们必须分别破解每个用户。关于:#6,是的。这是一个基本的安全规则,你更好