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_hashphpBB 関数を使用するためです (すべての要求でエントロピーを変更して永続化するため)。unique_id

これを修正するには 2 つの方法があります。

a) phpBB のcommon.phpを含めます。これにより、phpBB のコードがブートストラップされます (db 接続、エラー ハンドラーなどを含む)。

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 に答える