<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/refs.crypto.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ja',
  ),
  'this' => 
  array (
    0 => 'book.hash.php',
    1 => 'Hash',
    2 => 'HASH メッセージダイジェストフレームワーク',
  ),
  'up' => 
  array (
    0 => 'refs.crypto.php',
    1 => '暗号',
  ),
  'prev' => 
  array (
    0 => 'refs.crypto.php',
    1 => '暗号',
  ),
  'next' => 
  array (
    0 => 'hash.setup.php',
    1 => 'インストール/設定',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'reference/hash/book.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/book.hash.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="book.hash" class="book">
 
 <h1 class="title">HASH メッセージダイジェストフレームワーク</h1>
 
 
 
 <div id="intro.hash" class="preface">
  <h1 class="title">はじめに</h1>
  <p class="para">
   この拡張モジュールは、様々なハッシュアルゴリズムを使って任意の長さのメッセージを直接、または徐々に処理する関数を提供します。可能な処理には、たとえば <abbr title="Hash-based Message Authentication Code">HMAC</abbr> 値の生成や、<abbr title="HMAC Key Definition Function">HKDF</abbr> や <abbr title="Password-Based Key Derivation Function 2">PBKDF2</abbr> を含む、鍵の導出処理があります。
  </p>
  <p class="para">
   ハッシュアルゴリズムには、大きく分けて3つのカテゴリがあります。完全な一覧は <span class="function"><a href="function.hash-algos.php" class="function">hash_algos()</a></span> を参照ください。
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      チェックサムアルゴリズム(例: <code class="literal">&quot;crc32b&quot;</code>, <code class="literal">&quot;adler32&quot;</code>):
      通信エラーを検出するときなどに役立つチェックサムを計算するのに使えます。これらは大抵、とても高速です。また、衝突したり、容易に&quot;推測可能な&quot; 値を生成できたりするので、暗号には完全に不向きです。
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      非暗号化アルゴリズム(例:xxHash ファミリ):
      ハッシュテーブルで使うハッシュ値を計算するのに用いられます。よって、任意の文字列の入力に対して、うまく分散したハッシュ値を生成するように設計されています。これらも一般的に高速ですが、暗号化の処理には向いていません。
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      暗号化アルゴリズム(例:SHA-2 ファミリ):
      入力そのものを表現するものの、それが推測できず、かつ衝突もしにくいハッシュ値を生成するように設計されています。パフォーマンスは二の次とされていますが、モダンなハードウェアはこれらのアルゴリズムの処理を特別に支援するものがあり、PHP も利用可能なときはそれらを使おうとします。
     </span>
     <span class="simpara">
      <abbr>NIST</abbr> の Computer Security Resource Center には、
      <a href="https://csrc.nist.gov/projects/hash-functions" class="link external">&raquo;&nbsp;アメリカの連邦通信処理規格(FIPS) が現在認定しているアルゴリズムの説明</a> があります。
     </span>
     <div class="caution"><strong class="caution">警告</strong>
      <p class="para">
       <code class="literal">&quot;md4&quot;</code>
       <code class="literal">&quot;md5&quot;</code>, <code class="literal">&quot;sha1&quot;</code> のような
       初期の暗号化アルゴリズムの中には、既に衝突しやすいことが証明されているものがあります。こうしたアルゴリズムを使うことは、暗号を用いるアプリケーションでは既に推奨されません。
      </p>
     </div>
    </li>
   </ul>
  </p>

  <p class="para">
   パスワードを処理する際にハッシュ関数を使うためのベストプラクティスに関する情報は、<a href="faq.passwords.php" class="link">パスワードのハッシュに関するFAQ</a> も参照ください。
  </p>
 </div>
 
 
 







 





 





 








<ul class="chunklist chunklist_book"><li><a href="hash.setup.php">インストール/設定</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="hash.installation.php">インストール手順</a></li><li><a href="hash.resources.php">リソース型</a></li></ul></li><li><a href="hash.constants.php">定義済み定数</a></li><li><a href="class.hashcontext.php">HashContext</a> — HashContext クラス<ul class="chunklist chunklist_book chunklist_children"><li><a href="hashcontext.construct.php">HashContext::__construct</a> — private なコンストラクタのため、直接インスタンス化できません</li><li><a href="hashcontext.serialize.php">HashContext::__serialize</a> — HashContext オブジェクトをシリアライズする</li><li><a href="hashcontext.unserialize.php">HashContext::__unserialize</a> — data を HashContext オブジェクト に復元する</li></ul></li><li><a href="ref.hash.php">Hash 関数</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="function.hash.php">hash</a> — ハッシュ値 (メッセージダイジェスト) を生成する</li><li><a href="function.hash-algos.php">hash_algos</a> — 登録されているハッシュアルゴリズムの一覧を返す</li><li><a href="function.hash-copy.php">hash_copy</a> — ハッシュコンテキストをコピーする</li><li><a href="function.hash-equals.php">hash_equals</a> — タイミング攻撃に対しても安全な文字列比較</li><li><a href="function.hash-file.php">hash_file</a> — ファイルの内容から、ハッシュ値を生成する</li><li><a href="function.hash-final.php">hash_final</a> — 段階的なハッシュ処理を終了し、出来上がったダイジェストを返す</li><li><a href="function.hash-hkdf.php">hash_hkdf</a> — 与えられたキーから導出されるHKDFキーを生成する</li><li><a href="function.hash-hmac.php">hash_hmac</a> — HMAC 方式を使用してハッシュ値を生成する</li><li><a href="function.hash-hmac-algos.php">hash_hmac_algos</a> — hash_hmac に合うハッシュアルゴリズムの一覧を返す</li><li><a href="function.hash-hmac-file.php">hash_hmac_file</a> — HMAC 方式を使用して、指定されたファイルの内容からハッシュ値を生成する</li><li><a href="function.hash-init.php">hash_init</a> — 段階的なハッシュコンテキストを初期化する</li><li><a href="function.hash-pbkdf2.php">hash_pbkdf2</a> — PBKDF2 を使ってパスワードからキーを生成する</li><li><a href="function.hash-update.php">hash_update</a> — アクティブなハッシュコンテキストにデータを投入する</li><li><a href="function.hash-update-file.php">hash_update_file</a> — アクティブなハッシュコンテキストに、ファイルからデータを投入する</li><li><a href="function.hash-update-stream.php">hash_update_stream</a> — アクティブなハッシュコンテキストに、オープンしているストリームから
   データを投入する</li></ul></li></ul></div><?php manual_footer($setup); ?>