使用phpass CheckPassword不同的盐?(phpass CheckPassword u

2019-10-17 03:41发布

我有一个用户区和管理区的站点。 在管理方面,我有用户创建一个页面,创建管理员的页面。 在用户和管理员的网页,我用下面的代码以哈希密码:

$hasher = new PasswordHash(8, false);
$password = $HTTP_POST_VARS['password'];
$hash = $hasher->HashPassword($password);
$HTTP_POST_VARS['password'] = $hash;

对于用户页面,检查密码的代码是:

$hasher = new PasswordHash(8, false);
$check = $hasher->CheckPassword($password, $arrData[$conf['PASSWORD']['FIELD']]);
if ($check) {
    //login...
}

这完全工作正常。 我的用户密码进行散列并正确检查密码。 我用的是管理员登录页面上相同的代码,但是,它不能正常工作。 它是直接从数据库中的正确信息,但使用CheckPassword时,密码不匹配。 我想可能有一些做与腌制因为密码的开头部分似乎是相同的。

顺便说一句,我使用PHP 4.3。

Answer 1:

我想可能有一些做与腌制因为密码的开头部分似乎是相同的。

我不知道为什么你会认为,但是受密码哈希 (!)的开头部分应该是相同的。 通过bcrypt生成的哈希使用不只是包含的哈希值,而且所使用的哈希函数的一个指标,轮数,并已用于创建哈希值的盐模块化的加密格式。 这是相同的部分。 见还有一个相关的问题我复制这些信息在从:

  • Phpass -不能够访问所有密码的危险?

这可能不是回答你的问题,但希望澄清一些细节给你,让你不要在错误的地方寻找。


我对数据库设置现在允许50个字符。 有谁知道最长的哈希phpass会产生?

这取决于所使用的哈希函数。 在这篇文章中如何管理一个PHP应用程序的用户名和密码通过Phpass的作者,下面的例子Mysql数据库架构给出:

create database myapp;
use myapp;
create table users (user varchar(60), pass varchar(60));

你看这里,这是一个VARCHAR(60) 这意味着60个字符最多是不够的。

从另一个角度看,WordPress使用Phpass以及和具有以下密码列定义 :

user_pass VARCHAR(64)

这意味着,64个字符应该够他们。 但是请记住,WordPress的也支持其他哈希,所以这可能只是一个一般的价值,而不是具体的Phpass。

见还有:

  • 便携式PHP的密码哈希框架 (我会说这是最小的必读,如果你想了解更多阅读)
  • 便携式(PHPass)密码哈希值。 我要使用它们?


Answer 2:

我想我想通了。 该表存储管理员密码不存储整个哈希。 我不能相信我没有意识到前面。

我对数据库设置现在允许50个字符。 有谁知道最长的哈希phpass会产生?



文章来源: phpass CheckPassword using different salts?