【发布时间】:2011-11-02 08:56:31
【问题描述】:
通常如果我有密码,我会使用这个伪代码:
$password = "this is the user's password";
/***/
$salt = GenerateSalt();
$hash = Hash($password);
$hash = Hash($hash . $salt);
但是,据我了解,PHP 有一个crypt() 函数,它接受盐以及特定算法的迭代次数。显然你是......应该将返回的crypt 散列传递回 crypt 作为盐。我不明白这个。
谁能解释一下crypt是如何工作的?我还需要添加自己的盐并重新哈希吗?在那种情况下,我是否只使用固定盐进行 crypt,然后为每个用户生成一个单独的 crypt?或者 crypt 的 $salt 参数会为我解决这个问题吗?
【问题讨论】:
-
请注意您应该PHP 的
crypt不适合在5.3 之前的版本中使用。您总是想使用$2a$、$5$或$6$前缀分别获取 Blowfish、SHA-256 或 SHA-512,并且不保证在早期版本中可用。请阅读手册页了解更多详情。 -
还要注意 crypt 在 PHP 5.3.7 for MD5 中被破坏。他们刚刚发布了错误修复 5.3.8
标签: php hash cryptography