什么是PHP中最安全的方法在PHP中生成NOT随机密码?


What is the safest method in php to generate NOT random password in php?

本问题已经有最佳答案,请猛点这里访问。

我做了一些研究,所有生成密码的方法似乎都包含"随机"部分。如果我想生成一个密码,尽可能安全,没有随机部分,这样就可以让一个脚本生成它(用相同的结果一次又一次)?

比如在我的网站上,我有一个用户名为"foo-bar"的用户。做一些类似的事情

1
   hash('sha512', 'foo_bar'.'some_secret_word')

生成他的密码是最好的方法吗?

编辑:我需要我的脚本生成相同的密码,在输入相同的字符串时给出相同的密码,因此所有涉及rand()的内容都不是答案。

编辑:让我们详细说明这个问题。我有一个csv格式的用户数据(用户名、电子邮件、地址等)长列表。我必须将它们导入我的网站(建立在CMS上)。我知道如何导入它们,生成用户,但是我需要通过自己的PHP生成它们的密码,以便在任何时候看到它们,因为我需要在不同的时间将凭证打印给用户。使用任意元素生成密码意味着不能在任何时候拥有和打印凭证。由于某些原因,我不能简单地生成它们一次,将它们存储在某个地方,稍后再检查。显然,我不能用一个简单的方法生成密码,比如password='username'a string',任何一个查看自己密码的用户都会知道其他人的密码,所以我认为使用这个方法的好方法是加密字符串。然而,这个想法对我来说似乎不太"干净",我猜测是否有一个更标准、更干净的解决方案。


你所指的是密码加盐的做法。您的想法是正确的,在将哈希算法应用于用户密码之前,会向其添加一个单独的字符串。它所要保护的是所谓的彩虹表,攻击者将预先计算常见密码的散列值,并将其与"获取"的数据库转储中散列的密码进行比较。

在这种情况下,最好的做法是不要使用自己的哈希算法。有很多第三方散列库已经过尝试和测试,并被证明是安全的。

除此之外,最佳做法是为每个不同的密码(包括密码更改)生成不同的salt,然后还必须将其与密码一起存储,以便检查身份验证尝试。