関数の概要
PHPの hash_hmac 関数は、HMAC(ハッシュベースメッセージ認証コード)を生成するための関数です。HMACは、メッセージの完全性と認証を確保するために使われ、秘密鍵とメッセージを元にハッシュ値を作成します。セキュリティの面でデータの改ざん検知や認証に広く活用されています。
パラメータの説明
- algo(string): 使用するハッシュアルゴリズム名(例:
sha256、md5など)。 - 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_output を true に設定すると、結果はバイナリデータになります。表示するために 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でセキュアなデータ認証や改ざん検知を行いたい場合に非常に有効です。アルゴリズムや出力形式を選択でき、用途に応じて柔軟に利用可能です。セキュリティを考慮したアプリケーション開発にぜひ活用してください。
