【PHP8.x】sodium_crypto_pwhash_scryptsalsa208sha256_str_verify関数の使い方

作成日: 更新日:

sodium_crypto_pwhash_scryptsalsa208sha256_str_verify関数は、ユーザー認証などの際にパスワードの正当性を検証する関数です。この関数は、ユーザーが入力したパスワード(平文)と、以前に安全な方法でハッシュ化されて保存されているパスワード文字列が一致するかどうかを確認するために使用されます。パスワードハッシュとは、元のパスワードを復元できないように、特定のアルゴリズムによって変換された一方向のデータのことです。

この検証プロセスでは、保存されているハッシュ文字列に埋め込まれた情報(ハッシュ生成時のコストパラメータなど)を読み取り、それと同じ条件で入力されたパスワードを再度ハッシュ化します。そして、新しく生成されたハッシュと保存されているハッシュ文字列とを比較し、両者が一致すればパスワードが正しいと判断します。これにより、元のパスワードを直接データベースに保存することなく、安全にパスワードの認証を行うことが可能になります。

scryptアルゴリズムは、計算に時間とメモリを多く消費させることで、パスワードを推測する攻撃(総当たり攻撃など)に対して高い耐性を持つように設計されており、非常に堅牢なセキュリティを提供します。この関数は、検証に成功した場合は真(true)を、失敗した場合は偽(false)を返します。ウェブアプリケーションなどでユーザーのログイン処理を実装する際に、セキュリティを確保するための重要な役割を担っています。

基本的な使い方

構文(syntax)

1<?php
2// 検証対象のハッシュ文字列 (例: データベースから取得したもの)
3$storedHash = '$2y$10$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
4
5// ユーザーが入力したパスワード
6$userInputPassword = 'your_secret_password';
7
8// パスワードとハッシュを比較し、一致すれば true、そうでなければ false を返します
9$isValid = sodium_crypto_pwhash_scryptsalsa208sha256_str_verify($storedHash, $userInputPassword);

引数(parameters)

string $hash, string $password

  • string $hash: 検証対象のハッシュ化されたパスワード文字列
  • string $password: 検証する平文のパスワード文字列

戻り値(return)

bool

入力されたパスワードハッシュが、指定されたパスワードと一致するかどうかを示す真偽値を返します。一致する場合は true、一致しない場合は false を返します。

【PHP8.x】sodium_crypto_pwhash_scryptsalsa208sha256_str_verify関数の使い方 | いっしー@Webエンジニア