PHP
downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

hash_final> <hash_copy
Last updated: Fri, 30 Jan 2009

view this page in

hash_file

(PHP 5 >= 5.1.2, PECL hash >= 1.1)

hash_fileファイルの内容から、ハッシュ値を生成する

説明

string hash_file ( string $algo , string $filename [, bool $raw_output ] )

パラメータ

algo

選択したアルゴリズムの名前 (すなわち "md5"、"sha256"、"haval160,4" など…)。

filename

ハッシュ対象となるファイルの位置を示す URL。 fopen ラッパーをサポートしています。

raw_output

TRUE を設定すると、生のバイナリデータを出力します。 デフォルト (FALSE) の場合は小文字の 16 進数値となります。

返り値

raw_output が true に設定されていない場合は、 メッセージダイジェストの計算結果を小文字の 16 進数値形式の文字列で 返します。もし true に設定されていた場合は、メッセージダイジェストが そのままのバイナリ形式で返されます。

例1 hash_file() の使用例

<?php
/* ハッシュ値を計算するファイルを作成します */
file_put_contents('example.txt''The quick brown fox jumped over the lazy dog.');

echo 
hash_file('md5''example.txt');
?>

上の例の出力は以下となります。

5c6ffbdd40d9556b73a21e63c3e0e904

参考

  • hash() - ハッシュ値 (メッセージダイジェスト) を生成する
  • hash_hmac_file() - HMAC 方式を使用して、指定されたファイルの内容からハッシュ値を生成する
  • hash_update_file() - アクティブなハッシュコンテキストに、ファイルから データを投入する
  • md5_file() - 指定したファイルのMD5ハッシュ値を計算する
  • sha1_file() - ファイルの sha1 ハッシュを計算する



add a note add a note User Contributed Notes
hash_file
Keisial at gmail dot com
11-Sep-2008 09:46
The 'octets reversed' you are seeing is the bug 45028 which has been fixed. http://bugs.php.net/bug.php?id=45028

The difference between crc32 and crc32b is explained on mhash man page. crc32 is the one used on ethernet, while crc32b is the one used on zip, png... They differ on the table used.
allaryin at gmail dot com
24-Jul-2008 01:16
For those who are wondering, there appears to be no fundamental difference between hash_file('md5')/hash_file('sha1') and md5_file()/sha1_file(). They produce identical output and have comparable performance.

There is, however, a difference between hash_file('crc32') and something silly like crc32(file_get_contents()).

crc32(file_get_contents())'s results are most similar to those of hash_file('crc32b'), just with the octets reversed:

<?php
$fname
= "something.png";

$hash = hash_file( 'crc32', $fname );
echo
"crc32  = $hash\n";

$hash = hash_file( 'crc32b', $fname );
echo
"crc32b = $hash\n";

$hash = sprintf("%x",crc32(file_get_contents($fname)));
echo
"manual = $hash\n";
?>

crc32  = f41d7f4e
crc32b = 7dafbba4
manual = a4bbaf7d

hash_final> <hash_copy
Last updated: Fri, 30 Jan 2009
 
 
show source | credits | sitemap | contact | advertising | mirror sites