我有一个用户区和管理区的站点。 在管理方面,我有用户创建一个页面,创建管理员的页面。 在用户和管理员的网页,我用下面的代码以哈希密码:
$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。
我想可能有一些做与腌制因为密码的开头部分似乎是相同的。
我不知道为什么你会认为,但是受密码哈希 (!)的开头部分应该是相同的。 通过bcrypt生成的哈希使用不只是包含的哈希值,而且所使用的哈希函数的一个指标,轮数,并已用于创建哈希值的盐模块化的加密格式。 这是相同的部分。 见还有一个相关的问题我复制这些信息在从:
这可能不是回答你的问题,但希望澄清一些细节给你,让你不要在错误的地方寻找。
我对数据库设置现在允许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)密码哈希值。 我要使用它们?
我想我想通了。 该表存储管理员密码不存储整个哈希。 我不能相信我没有意识到前面。
我对数据库设置现在允许50个字符。 有谁知道最长的哈希phpass会产生?