首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xenforo密码认证问题

Xenforo密码认证问题
EN

Stack Overflow用户
提问于 2015-05-15 02:53:28
回答 1查看 1.1K关注 0票数 0

以下是我存储的密码哈希:

$P$Di4MXJKUkkJRfzrpffssNdasSN3XAg0

我试图像这样验证我的Xenforo密码:

代码语言:javascript
复制
$newHash = $crypt($userPass, $stored_hash);
return $newHash === $stored_hash;

例如:

我的密码是:123456

我的密码存储散列是:$P$Di4MXJKUkkJRfzrpffssNdasSN3XAg0

因此,我编写了以下代码来验证:

代码语言:javascript
复制
$newHash = crypt("123456", "$P$Di4MXJKUkkJRfzrpffssNdasSN3XAg0");
return $newHash === "$P$Di4MXJKUkkJRfzrpffssNdasSN3XAg0";

有人能建议我如何认证吗?

预先谢谢.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-15 07:51:20

您必须将新哈希与旧哈希进行比较,如下所示:

代码语言:javascript
复制
$existingHash = "$P$Di4MXJKUkkJRfzrpffssNdasSN3XAg0";
$newHash = crypt("123456", $existingHash);
$isSamePassword = $newHash === $existingHash;

我建议只为向后兼容性而使用此哈希算法,对于新哈希,您应该使用带有成本因素的慢算法。最简单和最安全的方法是使用散列()函数:

代码语言:javascript
复制
// 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);

编辑:

经过快速研究,我发现签名$P$是由phpass库使用的,以防没有安全的哈希算法。在没有替代方案的情况下,它使用迭代的MD5散列方案。您可以尝试包括phpass库(代码可用)来检查您的散列。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30250775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档