これらのパスワードはhashedであり、暗号化されていないことに注意してください。ハッシングと暗号化の基本的な違いは、暗号化を使用すると元のパスワードを回復できることです。あなたがハッシュされているとき(努力をしていなくても)、それをすることはできません。それは設計によるものです。
ハッシュブラウンを考えてみましょう。ハッシュブラウンを作った場合、元のジャガイモを元に戻すことはできません。これは、ハッカーがシステムを侵害してデータベースにアクセスすると、元のパスワードを表示または復元できないようにするためです。
したがって、ユーザーが正しいパスワードを入力したかどうかを確認するにはどうすればよいですか?ユーザーがログインしてパスワードを入力しようとすると、ユーザー入力に同じ機能が適用され、出力がデータベースに格納されているものと同じものかどうかが確認されます。ハッシュ関数はdeterministicなので、同じ入力では常に同じ出力が得られます。
同じハッシュで複数のアプリケーションを動作させるには、ユーザーを認証しようとするときに同じ機能をパスワードで使用する必要があります。 Drupalはおそらく1つまたは複数のsaltsも使用しますが、それは重要ではありません。アプリケーションで同じロジックが使用されている限り、ハッシュは常に完全に互換性があります。
は、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()
。
Drupalがプレーンなmd5を使用しないことを願っています。 – CodesInChaos
これを解読することはできませんが、同じ方法でハッシュすることができます。 – CodesInChaos
@ CodeInChaos私はDrupalがMD5を使用することさえ疑っています。 – NullUserException