# Estrutura de resumo de mensagens Hash

# Introdução

Esta extensão fornece funções que podem ser usadas para processamento direto ou incremental de mensagens de comprimento arbitrário usando uma variedade de algortimos de hash, incluindo a geração de valores HMAC e derivações chave, incluindo HKDF e PBKDF2.

De forma geral, existem três categorias de algoritmos de hash. Uma lista completa de algoritmos pode ser encontrada na documentação da função hash_algos().

- Algoritmos de soma de verificação (como `"crc32b"` ou `"adler32"`): Estes são usados para calcular somas de verificação, úteis em situações em que erros de transmissão precisam ser detectados. São geralmente muito rápidos. Estes algoritmos frequentemente geram valores que facilmente "previsíveis" ou podem ser manipulados para criar colisões, portanto são totalmente inadequados para uso em criptografia.
- Algoritmos não criptográficos (como a família xxHash): Estes são frequentemente usados para calcular valores de hash para tabelas de hash, já que são projetados para gerar uma boa distribuição sobre strings de entrada arbitrárias. Também são geralmente rápidos, mas também inadequados para uso em criptografia.
- Algoritmos criptográficos (como a família SHA-2): Estes são projetados para gerar valores de hash que são representativos de suas entradas mas não são previsíveis e nem sujeitos a colisões. O desempenho geralmente é uma preocupação secundária, mas os equipamentos modernos frequentemente suportam um gerenciamento especial para estes algoritmos que o PHP tenta fazer uso quando disponível. O Centro de Recursos de Segurança Computacional do NIST tem uma » explicação dos algoritmos atualmente aprovados pelos padrões de processamento de informação dos Estados Unidos.
  Cuidado

  Já foi provado que alguns dos primeiros algoritmos criptográficos, tais como `"md4"`, `"md5"` e `"sha1"`, estão sujeiros a ataques de colisão e por isso é recomendado que não sejam mais usados para aplicações de criptografia.

Consulte também as Perguntas Frequentes sobre Hash Seguro de Senhas para informação sobre melhores práticas para o uso de funções de hash ao lidar com senhas.

- Instalação/Configuração
  - Instalação
  - Tipos de Recurso
- Constantes predefinidas
- HashContext — The HashContext class
  - HashContext::__construct — Construtor privado para impedir instanciação direta
  - HashContext::__debugInfo — Retorna informação de depuração sobre o contexto de hash
  - HashContext::__serialize — Serializa o objeto HashContext
  - HashContext::__unserialize — Desserializa o parâmetro data em um objeto HashContext
- Hash Funções
  - hash — Gera um valor hash (resumo da mensagem)
  - hash_algos — Retorna uma lista de algoritmos de hash registrados
  - hash_copy — Copia contexto de hash
  - hash_equals — Comparação de strings segura para ataque de temporização
  - hash_file — Gera um valor hash usando o conteúdo de um arquivo fornecido
  - hash_final — Finaliza um hash incremental e retorna o resumo resultante
  - hash_hkdf — Gera uma derivação de chave HKDF de uma entrada de chave fornecida
  - hash_hmac — Gera um valor de hash com chave usando o método HMAC
  - hash_hmac_algos — Retorna uma lista de algoritmos de hash registrados adequados para hash_hmac
  - hash_hmac_file — Gera um valor hash com chave usando o método HMAC e o conteúdo de um arquivo fornecido
  - hash_init — Inicializa um contexto de hash incremental
  - hash_pbkdf2 — Gera uma derivação de chave PBKDF2 de uma senha fornecida
  - hash_update — Injeta dados em um contexto de hash ativo
  - hash_update_file — Injeta dados em um contexto de hash ativo a partir de um arquivo
  - hash_update_stream — Injeta dados em um contexto de hash ativo a partir de um fluxo

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