# HASH メッセージダイジェストフレームワーク

# はじめに

この拡張モジュールは、様々なハッシュアルゴリズムを使って任意の長さのメッセージを直接、または徐々に処理する関数を提供します。可能な処理には、たとえば HMAC 値の生成や、HKDF や PBKDF2 を含む、鍵の導出処理があります。

ハッシュアルゴリズムには、大きく分けて3つのカテゴリがあります。完全な一覧は hash_algos() を参照ください。

- チェックサムアルゴリズム(例: `"crc32b"`, `"adler32"`): 通信エラーを検出するときなどに役立つチェックサムを計算するのに使えます。これらは大抵、とても高速です。また、衝突したり、容易に"推測可能な" 値を生成できたりするので、暗号には完全に不向きです。
- 非暗号化アルゴリズム(例:xxHash ファミリ): ハッシュテーブルで使うハッシュ値を計算するのに用いられます。よって、任意の文字列の入力に対して、うまく分散したハッシュ値を生成するように設計されています。これらも一般的に高速ですが、暗号化の処理には向いていません。
- 暗号化アルゴリズム(例:SHA-2 ファミリ): 入力そのものを表現するものの、それが推測できず、かつ衝突もしにくいハッシュ値を生成するように設計されています。パフォーマンスは二の次とされていますが、モダンなハードウェアはこれらのアルゴリズムの処理を特別に支援するものがあり、PHP も利用可能なときはそれらを使おうとします。 NIST の Computer Security Resource Center には、 » アメリカの連邦通信処理規格(FIPS) が現在認定しているアルゴリズムの説明 があります。
  警告

  `"md4"` `"md5"`, `"sha1"` のような 初期の暗号化アルゴリズムの中には、既に衝突しやすいことが証明されているものがあります。こうしたアルゴリズムを使うことは、暗号を用いるアプリケーションでは既に推奨されません。

パスワードを処理する際にハッシュ関数を使うためのベストプラクティスに関する情報は、パスワードのハッシュに関するFAQ も参照ください。

- インストール/設定
  - インストール手順
  - リソース型
- 定義済み定数
- HashContext — HashContext クラス
  - HashContext::__construct — private なコンストラクタのため、直接インスタンス化できません
  - HashContext::__debugInfo — ハッシュコンテキストに関するデバッグ情報を返す
  - HashContext::__serialize — HashContext オブジェクトをシリアライズする
  - HashContext::__unserialize — data を HashContext オブジェクト に復元する
- Hash 関数
  - hash — ハッシュ値 (メッセージダイジェスト) を生成する
  - hash_algos — 登録されているハッシュアルゴリズムの一覧を返す
  - hash_copy — ハッシュコンテキストをコピーする
  - hash_equals — タイミング攻撃に対しても安全な文字列比較
  - hash_file — ファイルの内容から、ハッシュ値を生成する
  - hash_final — 段階的なハッシュ処理を終了し、出来上がったダイジェストを返す
  - hash_hkdf — 与えられたキーから導出されるHKDFキーを生成する
  - hash_hmac — HMAC 方式を使用してハッシュ値を生成する
  - hash_hmac_algos — hash_hmac に合うハッシュアルゴリズムの一覧を返す
  - hash_hmac_file — HMAC 方式を使用して、指定されたファイルの内容からハッシュ値を生成する
  - hash_init — 段階的なハッシュコンテキストを初期化する
  - hash_pbkdf2 — PBKDF2 を使ってパスワードからキーを生成する
  - hash_update — アクティブなハッシュコンテキストにデータを投入する
  - hash_update_file — アクティブなハッシュコンテキストに、ファイルからデータを投入する
  - hash_update_stream — アクティブなハッシュコンテキストに、オープンしているストリームから データを投入する

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open