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

作成日: 更新日:

sodium_crypto_generichash関数は、指定された入力データから、暗号学的に安全なハッシュ値(ダイジェスト)を生成する関数です。この関数は、PHPのsodium拡張の一部として提供され、BLAKE2bという堅牢なハッシュアルゴリズムを利用しています。主に、データの完全性を検証したり、情報が改ざんされていないかを検出したりするセキュリティ関連の処理に用いられます。

入力されたデータの内容がわずかでも変更されると、出力されるハッシュ値は全く異なるものとなるため、データの同一性を効率的に確認することが可能です。生成されるハッシュ値の長さは、デフォルトでSODIUM_CRYPTO_GENERICHASH_BYTES(32バイト)ですが、関数呼び出し時にlength引数で指定することで、SODIUM_CRYPTO_GENERICHASH_BYTES_MIN(1バイト)からSODIUM_CRYPTO_GENERICHASH_BYTES_MAX(64バイト)の範囲で調整できます。

さらに、この関数はオプションで「キー」(key)引数を受け取ります。キーを指定することで、同じ入力データであっても、異なるキーを用いた場合には異なるハッシュ値が生成されるようになります。これにより、メッセージ認証コード(MAC)のような用途で、データが意図しない第三者によって改ざんされていないことを検証するための強力な手段となります。例えば、ユーザーのパスワードをデータベースに直接保存する代わりに、この関数で生成したハッシュ値を保存することで、情報漏洩時のリスクを大幅に軽減するなど、システム全体のセキュリティを向上させるために不可欠な機能の一つです。

基本的な使い方

構文(syntax)

1<?php
2$messageString = 'ハッシュ化するデータ';
3$hashValue = sodium_crypto_generichash($messageString);

引数(parameters)

string $message, string $key = "", int $length = SODIUM_CRYPTO_GENERICHASH_BYTES

  • string $message: ハッシュ化したいメッセージを指定する文字列
  • string $key = "": ハッシュ化に使用する秘密鍵を指定する文字列。省略可能で、指定しない場合はランダムな鍵が使用されます。
  • int $length = SODIUM_CRYPTO_GENERICHASH_BYTES: 生成するハッシュ値のバイト長を指定する整数。デフォルト値は SODIUM_CRYPTO_GENERICHASH_BYTES です。

戻り値(return)

string

指定された入力データから生成された、固定長のハッシュ値(バイト列)を文字列形式で返します。

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