hash_init
(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)
hash_init — 段階的なハッシュコンテキストを初期化する
説明
string
$algo
,int
$flags
= 0,#[\SensitiveParameter] string
$key
= "",array
$options
= []): HashContext
パラメータ
algo
-
選択したアルゴリズムの名前 (例:
"sha256"
)。 サポートされているアルゴリズムの一覧については、hash_algos() を参照ください。注意:
HASH_HMAC
フラグが指定されている場合、 暗号に適さないハッシュ関数は許可されません。 flags
-
ハッシュ生成の際に使用するオプションで、現在は、ただひとつ
HASH_HMAC
のみをサポートしています。これが 指定された場合、key
を 必ず指定しなければなりません。 key
-
flags
にHASH_HMAC
が指定された場合に、HMAC 形式のハッシュで使用される共有の秘密鍵を 設定する必要があります。 options
-
様々なハッシュアルゴリズム向けの、オプションの配列。 現状は、MurmurHash バリアントが
"seed"
だけをサポートしています。
戻り値
hash_update()、 hash_update_stream()、hash_update_file() および hash_final() で使用するハッシュコンテキストを 返します。
エラー / 例外
algo
が不明な場合や、
暗号に適さないハッシュ関数の場合、
または key
が空の場合に
ValueError がスローされます。
変更履歴
バージョン | 説明 |
---|---|
8.1.0 | options パラメータが追加されました。 |
8.0.0 |
algo が不明な場合や、
暗号に適さないハッシュ関数の場合、
または key が空の場合に
ValueError がスローされるようになりました。
これより前のバージョンでは、false を返し、
E_WARNING が発生していました。
|
7.2.0 | 暗号に適さないハッシュ関数 (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) は使えなくなりました。 |
7.2.0 | リソースの代わりに HashContext を返すようになりました。 |
例
例1 段階的なハッシュの例
<?php
$hash = hash('sha256', 'The quick brown fox jumped over the lazy dog.');
$ctx = hash_init('sha256');
hash_update($ctx, 'The quick brown fox ');
hash_update($ctx, 'jumped over the lazy dog.');
$incremental_hash = hash_final($ctx);
echo $incremental_hash, PHP_EOL;
var_dump($hash === $incremental_hash);
?>
上の例の出力は以下となります。
68b1282b91de2c054c36629cb8dd447f12f096d3e3c587978dc2248444633483 bool(true)
参考
- hash_algos() - 登録されているハッシュアルゴリズムの一覧を返す
- hash_update() - アクティブなハッシュコンテキストにデータを投入する
- hash_update_file() - アクティブなハッシュコンテキストに、ファイルからデータを投入する
- hash_update_stream() - アクティブなハッシュコンテキストに、オープンしているストリームから データを投入する
- hash_final() - 段階的なハッシュ処理を終了し、出来上がったダイジェストを返す