hash_hmac

関数の概要

PHPの hash_hmac 関数は、HMAC(ハッシュベースメッセージ認証コード)を生成するための関数です。HMACは、メッセージの完全性と認証を確保するために使われ、秘密鍵とメッセージを元にハッシュ値を作成します。セキュリティの面でデータの改ざん検知や認証に広く活用されています。

パラメータの説明

  • algo(string): 使用するハッシュアルゴリズム名(例:sha256md5など)。
  • data(string): ハッシュ化するメッセージやデータ。
  • key(string): HMAC生成に使う秘密鍵。
  • raw_output(bool, オプション): trueの場合、バイナリ形式で出力。false(デフォルト)の場合は16進数の文字列で返します。

戻り値

指定したアルゴリズムで計算されたHMACハッシュ値を返します。文字列形式で返され、raw_output パラメータが true の場合はバイナリデータとなります。失敗した場合は FALSE を返すことがあります。

使用例

基本的な使い方

<?php
$message = 'Hello World';
$key = 'secretkey';
$hmac = hash_hmac('sha256', $message, $key);
echo $hmac;
?>

この例では、’Hello World’ というメッセージと ‘secretkey’ という鍵を使ってSHA-256ハッシュのHMACを生成しています。結果は16進数の文字列で返されます。

バイナリ形式での出力

<?php
$message = 'Sample data';
$key = 'mysecret';
$binaryHmac = hash_hmac('md5', $message, $key, true);
echo bin2hex($binaryHmac);
?>

raw_outputtrue に設定すると、結果はバイナリデータになります。表示するために bin2hex 関数で16進数表現に変換しています。

異なるアルゴリズムの指定例

<?php
$message = 'Data to hash';
$key = 'key12345';
$hmacSha1 = hash_hmac('sha1', $message, $key);
$hmacSha512 = hash_hmac('sha512', $message, $key);

echo "SHA1: " . $hmacSha1 . "n";
echo "SHA512: " . $hmacSha512 . "n";
?>

SHA-1やSHA-512など、利用可能なアルゴリズムを自由に指定してHMACを生成できます。用途やセキュリティ要件に応じて使い分けましょう。

関連する関数

  • hash(): 通常のハッシュ値を生成。
  • hash_algos(): 利用可能なハッシュアルゴリズムの一覧を取得。
  • hash_equals(): 安全にハッシュ比較を行う関数。

まとめ

hash_hmac は秘密鍵を用いた強力なメッセージ認証コードを生成できる関数で、PHPでセキュアなデータ認証や改ざん検知を行いたい場合に非常に有効です。アルゴリズムや出力形式を選択でき、用途に応じて柔軟に利用可能です。セキュリティを考慮したアプリケーション開発にぜひ活用してください。