【问题标题】:How to convert text to phpbb hash?如何将文本转换为 phpbb 哈希?
【发布时间】:2011-03-13 10:39:31
【问题描述】:

我正在尝试将测试密码 (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 个不同的主机上尝试过,但没有任何运气。否则有没有简单地将文本转换为哈希的在线服务?

提前致谢

【问题讨论】:

    标签: php hash passwords phpbb3


    【解决方案1】:

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

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

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

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

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

    小警告:phpBB3 将哈希标识符从 '$P$' 更改为 '$H$'(不要问我为什么),因此您必须更改此行:

    $output = '$P$';
    

    到:

    $output = '$H$';
    

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

    【讨论】:

    • 附带说明,已将更改合并到 phpBB 中,这将使“P”也可以工作,这将出现在 phpBB 3.0.9 中。
    【解决方案2】:

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

    $P$
    

    $H$
    

    用于phpbb

    【讨论】:

      【解决方案3】:

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

      function sql_escape($str) { return $str; }
      

      【讨论】:

        猜你喜欢
        • 2019-02-19
        • 2012-11-11
        • 2015-11-26
        • 2019-10-27
        • 2019-05-23
        • 2011-05-30
        • 1970-01-01
        • 2010-12-16
        • 2011-12-19
        相关资源
        最近更新 更多