4

我正在尝试将测试密码(testing4)转换为 phpbb3 哈希。这是我尝试过的代码:

<?php
/** 
*
* @package phpBB3
* @version $Id: v3_dbal.xml 44 2007-07-25 11:06:55Z smithy_dll $
* @copyright (c) 2005 phpBB Group 
* @license http://opensource.org/licenses/gpl-license.php GNU Public License 
*
*/

/**
* @ignore
*/
define('IN_PHPBB', true);
include ("functions_phpbb.php");

$data['new_password'] = "testing4";

$user_row = array(
    'user_password' => phpbb_hash($data['new_password'])
    );

$hash = $user_row['user_password'];

echo $hash;
?>

这也不起作用:

$pass = "testing4";
$hash = phpbb_hash($pass);

两次我都收到以下错误消息:

Fatal error: Call to a member function sql_escape() on a non-object in /home/a8544020/public_html/Pass/functions_phpbb.php on line 149

我已经在 2 个不同的主机上尝试过,但没有任何运气。否则有没有简单地将文本转换为哈希的在线服务?

提前致谢

4

3 回答 3

5

我假设您的文件是phpBB3 包文件functions_phpbb.php的副本。includes/functions.php

现在,您收到此错误的原因是因为该phpbb_hash函数使用 phpBBunique_id函数进行熵,这取决于数据库连接(在每个请求上更改和持久化熵)。

有两种方法可以解决此问题。

a) 包括 phpBB's common.php,它将引导您的 phpBB 代码(包括数据库连接、错误处理程序等)。

b) phpBB3 使用phpass进行散列。我建议您只需下载独立的 phpass 包并使用它来生成哈希。

一点警告:phpBB3 将哈希标识符从 '$P$' 更改为 '$H$'(不要问我为什么),所以你必须更改这一行:

$output = '$P$';

到:

$output = '$H$';

由于选项 a) 增加了相当多的开销,而且您可能只想使用散列函数,我建议使用选项 b)。

于 2011-03-13T13:20:06.113 回答
0

也许是另一种方式。我使用的库来自:http ://www.openwall.com/phpass/要使其正常工作,您必须更改生成的 HASH 的前 3 个字符:

$P$

$H$

用于phpbb

于 2012-05-25T21:42:32.807 回答
-1

我想知道为什么他们通过 SQL 转义函数运行密码哈希......但您可以简单地尝试将该函数定义为虚拟函数:

function sql_escape($str) { return $str; }
于 2011-03-13T10:50:00.123 回答