PHPの crypto_pwhash_str() 関数について解説

PHP

こんにちは!今日は、PHPのSodiumライブラリに含まれる便利な関数、crypto_pwhash_str() についてご紹介します。この関数は、パスワードを安全にハッシュ化し、そのハッシュを保存するために広く使用されています。

crypto_pwhash_str() 関数とは?

crypto_pwhash_str() は、ユーザーのパスワードをセキュアにハッシュ化し、そのハッシュを安全に保存するための関数です。この関数は、ソルトの生成やアルゴリズムの選択を自動的に行うため、開発者が手動でそれらを管理する必要がありません。

基本的な使い方

string sodium_crypto_pwhash_str(string $passwd, int $opslimit, int $memlimit)
  • $passwd: ハッシュ化するパスワード。
  • $opslimit: 演算回数の上限。
  • $memlimit: メモリ使用量の上限。

crypto_pwhash_str() は、ハッシュ化されたパスワードとそのメタ情報(ソルトやアルゴリズムのバージョン)を含む文字列を返します。

<?php
// パスワード
$password = 'my_secure_password';

// パスワードのハッシュ化
$hash = sodium_crypto_pwhash_str(
    $password,
    SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
    SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
);

echo $hash . "\n";
?>

このコードは、指定されたパスワードをハッシュ化し、その結果を表示します。ハッシュには、ソルトやアルゴリズムに関する情報も含まれます。

利用シーン

  • ユーザー認証: crypto_pwhash_str() は、ユーザーが登録したパスワードをハッシュ化し、そのハッシュをデータベースに保存するために使用されます。ログイン時には、crypto_pwhash_str_verify() を使って入力されたパスワードと保存されたハッシュを比較します。
  • セキュリティ重視のシステム: 強力なパスワードハッシュを生成するため、この関数はセキュリティが重要なシステムに最適です。

関連関数: crypto_pwhash_str_verify()

パスワードハッシュを検証するために使用される関数です。ユーザーがログイン時に入力したパスワードが正しいかどうかを確認する際に使用されます。

<?php
// ハッシュされたパスワード
$hash = '$argon2id$v=19$m=65536,t=2,p=1$...';

// パスワードの検証
if (sodium_crypto_pwhash_str_verify($hash, $password)) {
    echo "パスワードが正しいです!\n";
} else {
    echo "パスワードが間違っています。\n";
}
?>

まとめ

crypto_pwhash_str() は、パスワードをセキュアにハッシュ化するための非常に便利な関数です。ソルトの生成やアルゴリズムの選択を自動化し、強力なハッシュを簡単に作成できます。ユーザー認証システムの構築において、この関数を使うことで、より安全なシステムを構築することができます。

それではまた次回、さらなるPHPのテクニックをお楽しみに!Happy coding!

タイトルとURLをコピーしました