Как преобразовать текст в хеш phpbb?

Я пытаюсь преобразовать тестовый пароль (test4) в хэш-код 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 

Я пробовал это на двух разных хостах без везения. Иначе есть ли онлайн-сервис, который просто преобразует текст в хэш?

заранее спасибо

    Я предполагаю, что ваш файл functions_phpbb.php является копией файла includes/functions.php пакета phpBB3.

    Теперь причина, по которой вы получаете эту ошибку, состоит в том, что функция phpbb_hash использует функцию phpBB unique_id для энтропии, которая зависит от соединения с базой данных (для изменения и сохранения энтропии при каждом запросе).

    Есть два способа исправить это.

    a) включить phpBB common.php , который загрузит ваш код для phpBB (включая соединение db, обработчики ошибок и т. д.).

    b) phpBB3 использует phpass для хеширования. Я предлагаю вам просто загрузить автономный пакет phpass и использовать его для генерации хэша.

    Небольшое предостережение: phpBB3 изменяет хэш-идентификатор с '$ P $' на $ H $ (не спрашивайте меня почему), поэтому вам придется изменить эту строку:

     $output = '$P$'; 

    чтобы:

     $output = '$H$'; 

    Поскольку опция a) добавляет некоторые накладные расходы, и вы, вероятно, только хотите использовать хеширующие функции, я бы предложил вариант b).

    Может быть, наоборот. Я использовал библиотеку из: http://www.openwall.com/phpass/. Чтобы заставить ее работать, вы должны изменить первые 3 символа сгенерированного HASH:

     $P$ 

    в

     $H$ 

    используется в phpbb

    Интересно, почему они запускают хэш-пароль с помощью функции escaping SQL … но вы могли бы просто попытаться определить эту функцию как манекен:

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