関数の概要
PHPの hash_file 関数は、指定したファイルの内容に対してハッシュ値を計算するための関数です。ファイルの整合性チェックや改ざん検知、デジタル署名の検証など、セキュリティ関連の処理でよく利用されます。ハッシュアルゴリズムを自由に指定できるため、MD5、SHA-1、SHA-256など様々なアルゴリズムに対応しています。
パラメータの説明
string $algo:ハッシュアルゴリズム名を文字列で指定します。例:'md5'、'sha256'など。string $filename:ハッシュを計算する対象のファイルのパスを文字列で指定します。bool $binary = false(省略可能):結果をバイナリ形式で返すかどうか。デフォルトはfalseで、16進数の文字列で返します。
戻り値
指定したファイルのハッシュ値を文字列で返します。$binaryがtrueの場合はバイナリ形式の文字列、falseの場合は16進数の文字列です。ファイルが存在しない場合や読み込みに失敗した場合は false を返します。
使用例
基本的な使い方(MD5ハッシュの取得)
<?php
$hash = hash_file('md5', 'example.txt');
if ($hash !== false) {
echo "MD5ハッシュ値: " . $hash;
} else {
echo "ファイルの読み込みに失敗しました。";
}
?>
この例では、example.txtというファイルのMD5ハッシュを計算し、結果を16進数の文字列で出力しています。
SHA-256でハッシュを計算する
<?php
$hash = hash_file('sha256', 'example.txt');
echo "SHA-256ハッシュ値: " . $hash;
?>
SHA-256アルゴリズムを指定することで、より安全なハッシュ値を取得できます。改ざん検知や比較に使われることが多いです。
バイナリ形式でハッシュ値を取得する
<?php
$binaryHash = hash_file('sha1', 'example.txt', true);
echo bin2hex($binaryHash); // バイナリを16進数で表示
?>
3番目のパラメータにtrueを指定すると、ハッシュ値がバイナリ形式で返ります。バイナリ形式はストレージやネットワーク通信の際に効率的です。
関連する関数
hash():文字列のハッシュ値を計算する関数hash_update() / hash_final():ストリーム的にデータをハッシュ化するための関数md5_file():MD5ハッシュをファイル単位で計算する関数 (古い形式)sha1_file():SHA-1ハッシュをファイル単位で計算する関数
まとめ
hash_file関数は、PHPでファイルのハッシュ値を簡単かつ安全に計算できる便利な関数です。対応しているハッシュアルゴリズムが豊富で、用途に応じて使い分けることができます。ファイルの整合性チェックやセキュリティの確保に欠かせないため、PHPでファイル操作をする際はぜひ活用してください。
