Xenforo 密码验证问题
Xenforo Password Authentication Problrm
以下是我的密码存储哈希:
$P$Di4MXJKUkkJRfzrpffssNdasSN3XAg0
我正在尝试像这样验证我的 Xenforo 密码:
$newHash = $crypt($userPass, $stored_hash);
return $newHash === $stored_hash;
例如:
我的密码是:123456
我的密码存储哈希是:$P$Di4MXJKUkkJRfzrpffssNdasSN3XAg0
所以我正在编写以下代码来进行身份验证:
$newHash = crypt("123456", "$P$Di4MXJKUkkJRfzrpffssNdasSN3XAg0");
return $newHash === "$P$Di4MXJKUkkJRfzrpffssNdasSN3XAg0";
任何人都可以建议我如何进行身份验证吗?
提前致谢。
您必须像这样比较新的哈希值和旧的哈希值:
$existingHash = "$P$Di4MXJKUkkJRfzrpffssNdasSN3XAg0";
$newHash = crypt("123456", $existingHash);
$isSamePassword = $newHash === $existingHash;
我建议使用此哈希算法只是为了向后兼容,对于新的哈希,您应该使用具有成本因素的慢速算法。最简单和最安全的方法是使用 password_hash() 函数:
// Hash a new password for storing in the database.
// The function automatically generates a cryptographically safe salt.
$hashToStoreInDb = password_hash($password, PASSWORD_BCRYPT);
// Check if the hash of the entered login password, matches the stored hash.
// The salt and the cost factor will be extracted from $existingHashFromDb.
$isPasswordCorrect = password_verify($password, $existingHashFromDb);
编辑:
经过快速研究后,我发现 phpass library 使用了签名 $P$
,以防没有可用的安全哈希算法。在没有替代方案的情况下,它使用迭代的 MD5 哈希方案。您可以尝试包含 phpass 库(代码可用)来检查您的哈希值。
以下是我的密码存储哈希:
$P$Di4MXJKUkkJRfzrpffssNdasSN3XAg0
我正在尝试像这样验证我的 Xenforo 密码:
$newHash = $crypt($userPass, $stored_hash);
return $newHash === $stored_hash;
例如:
我的密码是:123456
我的密码存储哈希是:$P$Di4MXJKUkkJRfzrpffssNdasSN3XAg0
所以我正在编写以下代码来进行身份验证:
$newHash = crypt("123456", "$P$Di4MXJKUkkJRfzrpffssNdasSN3XAg0");
return $newHash === "$P$Di4MXJKUkkJRfzrpffssNdasSN3XAg0";
任何人都可以建议我如何进行身份验证吗?
提前致谢。
您必须像这样比较新的哈希值和旧的哈希值:
$existingHash = "$P$Di4MXJKUkkJRfzrpffssNdasSN3XAg0";
$newHash = crypt("123456", $existingHash);
$isSamePassword = $newHash === $existingHash;
我建议使用此哈希算法只是为了向后兼容,对于新的哈希,您应该使用具有成本因素的慢速算法。最简单和最安全的方法是使用 password_hash() 函数:
// Hash a new password for storing in the database.
// The function automatically generates a cryptographically safe salt.
$hashToStoreInDb = password_hash($password, PASSWORD_BCRYPT);
// Check if the hash of the entered login password, matches the stored hash.
// The salt and the cost factor will be extracted from $existingHashFromDb.
$isPasswordCorrect = password_verify($password, $existingHashFromDb);
编辑:
经过快速研究后,我发现 phpass library 使用了签名 $P$
,以防没有可用的安全哈希算法。在没有替代方案的情况下,它使用迭代的 MD5 哈希方案。您可以尝试包含 phpass 库(代码可用)来检查您的哈希值。