ハッシュ関数は一方向の暗号化アルゴリズムです(一方向とは、特定の出力から入力を計算できないことを意味します)。入力を受け取り、かなり長い数値を吐き出します(多くの場合、16進形式で表されます)。したがって、特定の入力にハッシュアルゴリズムを適用すると(この場合は「hello」にワールプールアルゴリズムを適用します)、ダイジェストが返されます(この場合、ダイジェストの16進文字列は0a25f55d7308eca6b9567a7ed3bd1b46327f0f1ffdc804dd8bb5af40e88d78b88df0d002a89e2fdbd5 明らかに、「hello」は「0a25f..」と同じではありません。ハッシュアルゴリズムを使用する一般的なシナリオは、データベースまたはその他の種類のIDストレージに保持されているパスワードを保護することです。したがって、特定のパスワードを比較する場合(例:
したがって、「hello」を以前に生成されたハッシュと比較する代わりに、「hello」のハッシュを以前に生成されたハッシュと比較したいとします。
$hash = hash("whirlpool","hello");
if(hash("whirlpool","hello") === $hash){
echo "true";
}
送信されたパスワードを確認したい場合は、次のように記述できます。
$pw_stored = "0a25f..." //(... left out some chars) that's the hash you got from the db
if(hash('whirpool', $_POST['password']) === $pw_stored){ // $_POST['password'] is the password a user has entered in a login form
echo "true";
}