# Фреймворк HASH для дайджеста сообщений

# Введение

Функции модуля напрямую или инкрементно обрабатывают сообщения произвольной длины через алгоритмы хеширования, включая генерацию HMAC-значений и производных ключей, которые включают HKDF- и PBKDF2-ключи.

Подробный список алгоритмов приводит описание функции hash_algos(), а алгоритмы хеширования входят в три условные категории:

- Алгоритмы контрольной суммы наподобие `crc32b` или `adler32`: вычисляют контрольные суммы, которые приносят пользу, когда требуется обнаружить ошибки передачи. Алгоритмы этой категории часто работают очень быстро. Эти алгоритмы часто генерируют значения, которые «легко угадать» или которыми иногда манипулируют, чтобы создавать коллизии, поэтому они непригодны в криптографических целях.
- Некриптографические алгоритмы наподобие алгоритмов семейства xxHash: этими алгоритмами часто вычисляют хеш-значения для хеш-таблиц, поскольку алгоритмы этой категории дают хорошее распределение по произвольным строковым входным данным. Они также в общем быстрые, но также непригодны в криптографических целях.
- Криптографические алгоритмы наподобие семейства SHA-2: получают хеш-значения, которые представляют входные данные, но не поддаются угадыванию и не создают коллизии. Производительность часто играет второстепенную роль, но современное оборудование часто поддерживает обработку этих алгоритмов, которую PHP пытается использовать, когда она доступна. Центр ресурсов компьютерной безопасности (Computer Security Resource Center) Национального института стандартов и технологий США (NIST) » объясняет алгоритмы, которые одобрили федеральные стандарты обработки информации США (US FIPS)).

  Испытания доказали, что ранние криптографические алгоритмы наподобие `md4`, `md5` и `sha1` оказались подвержены коллизионным атакам, и часто рекомендуется больше не использовать их для криптографических приложений.

Смотрите также FAQ по безопасному хешированию паролей, которые дают информацию о лучших практиках работы с хеш-функциями при обработке паролей.

- Установка и настройка
  - Установка
  - Типы ресурсов
- Предопределённые константы
- HashContext — Класс HashContext
  - HashContext::__construct — Закрытый конструктор для запрета непосредственного создания объекта
  - 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