PHP 8.4.1 Released!

hash_init

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

hash_init段階的なハッシュコンテキストを初期化する

説明

hash_init(
    string $algo,
    int $flags = 0,
    #[\SensitiveParameter] string $key = "",
    array $options = []
): HashContext

パラメータ

algo

選択したアルゴリズムの名前 (例: "sha256")。 サポートされているアルゴリズムの一覧については、hash_algos() を参照ください。

注意:

HASH_HMAC フラグが指定されている場合、 暗号に適さないハッシュ関数は許可されません。

flags

ハッシュ生成の際に使用するオプションで、現在は、ただひとつ HASH_HMAC のみをサポートしています。これが 指定された場合、key必ず指定しなければなりません。

key

flagsHASH_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() - 段階的なハッシュ処理を終了し、出来上がったダイジェストを返す

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top