Обратите внимание, что эти пароли хешированы , не зашифрованы.Принципиальная разница между хешированием и шифрованием заключается в том, что с помощью шифрования вы сможете восстановить исходный пароль.Вы не сможете сделать это, когда они будут хэшированы (не без особых усилий), и это специально.
Подумайте о оладьи: если вы сделали хэш-коричневый, вы не сможете вернуть оригинальный картофель.Это сделано для того, чтобы, если хакер скомпрометировал вашу систему и получил доступ к базе данных, он не смог увидеть или восстановить исходные пароли.
Так как же проверить, правильно ли пользователь ввел правильный пароль??Что ж, когда пользователь пытается войти в систему и ввести пароль, вы применяете те же функции к пользовательскому вводу и смотрите, совпадает ли вывод с тем, что хранится в базе данных.Поскольку функции хеширования детерминированы , вы всегда получите один и тот же вывод с одним и тем же вводом.
Ключом к тому, чтобы несколько приложений работали с одинаковыми хешами, было использование одинаковыми функциями.на пароли при попытке аутентификации пользователя.Drupal, вероятно, также использует одну или несколько солей - но это не важно.Пока ваши приложения используют одну и ту же логику, хэши будут всегда полностью совместимы.
Предположим, что Drupal использует нечто подобное в качестве своей системы аутентификации (очень упрощенный псевдо-код):
/*
input: user-entered $username and $password
output: true if authorized, false otherwise
*/
function auth($username, $password)
{
$salt = 'some random salt';
// input is sanitized somewhere, somehow
$hash_from_db = db_result('SELECT hash FROM users WHERE username = "$username"');
$hashed_input = sha1($password . $salt);
if ($hash_from_db != $hashed_input)
return false;
else
return true;
}
Если ваше другое приложение использует ту же самую вещь для аутентификации своих пользователей, оно будет работать нормально.Обратите внимание, что схема аутентификации Drupal, вероятно, будет намного более сложной, но не позволяйте этому волновать вас.Это примерно то же самое, что делает Drupal.
Для Drupal, вот где вы можете начать: user_hash_password()
.