<?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 => 'ru',
  ),
  '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' => 'ru',
    '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">
   Подробный список алгоритмов приводит описание функции <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">crc32b</code> или <code class="literal">adler32</code>:
      вычисляют контрольные суммы, которые приносят пользу, когда требуется
      обнаружить ошибки передачи. Алгоритмы этой категории часто работают очень быстро.
      Эти алгоритмы часто генерируют значения, которые «легко угадать» или которыми иногда
      манипулируют, чтобы создавать коллизии, поэтому они непригодны в криптографических целях.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Некриптографические алгоритмы наподобие алгоритмов семейства xxHash:
      этими алгоритмами часто вычисляют хеш-значения для хеш-таблиц, поскольку
      алгоритмы этой категории дают хорошее распределение по произвольным строковым входным данным.
      Они также в общем быстрые, но также непригодны в криптографических целях.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Криптографические алгоритмы наподобие семейства SHA-2:
      получают хеш-значения, которые представляют
      входные данные, но не поддаются угадыванию и не создают коллизии. Производительность
      часто играет второстепенную роль, но современное оборудование часто поддерживает
      обработку этих алгоритмов, которую PHP пытается использовать, когда она доступна.
     </span>
     <span class="simpara">
      Центр ресурсов компьютерной безопасности (Computer Security Resource Center)
      Национального института стандартов и технологий США (<abbr>NIST</abbr>)
      <a href="https://csrc.nist.gov/projects/hash-functions" class="link external">&raquo;&nbsp;объясняет алгоритмы, которые одобрили
      федеральные стандарты обработки информации США (US FIPS))</a>.
     </span>
     <p class="para">
      Испытания доказали, что ранние криптографические алгоритмы наподобие <code class="literal">md4</code>,
      <code class="literal">md5</code> и <code class="literal">sha1</code> оказались
      подвержены коллизионным атакам, и часто рекомендуется
      больше не использовать их для криптографических приложений.
     </p>
    </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> — Закрытый конструктор для запрета непосредственного создания объекта</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); ?>