# HASH (framework de resúmenes de mensaje)

# Introducción

Esta extensión proporciona funciones que pueden usarse para el procesamiento directo o incremental de mensajes de longitud arbitraria utilizando una variedad de algoritmos de hash, incluyendo la generación de valores HMAC y derivaciones de claves incluyendo HKDF y PBKDF2.

Existen aproximadamente tres categorías de algoritmos de hash, y una lista completa de algoritmos puede encontrarse en la documentación de hash_algos().

- Algoritmos de suma de verificación (como `"crc32b"` o `"adler32"`): Estos se utilizan para calcular sumas de verificación, útiles en situaciones como cuando se deben detectar errores de transmisión. Suelen ser muy rápidos. Estos algoritmos a menudo generan valores que son fácilmente "adivinables" o pueden ser manipulados para crear colisiones, por lo que son completamente inadecuados para uso criptográfico.
- Algoritmos no criptográficos (como la familia xxHash): Estos se utilizan a menudo para calcular valores hash para tablas hash, ya que están diseñados para ofrecer una buena distribución sobre entradas de string arbitrarias. También suelen ser rápidos, pero no son adecuados para uso criptográfico.
- Algoritmos criptográficos (como la familia SHA-2): Estos están diseñados para generar valores hash que sean representativos de sus entradas pero que no sean adivinables ni propensos a colisiones. El rendimiento suele ser una preocupación secundaria, pero el hardware moderno a menudo admite un manejo especial para estos algoritmos que PHP intenta utilizar cuando está disponible. El Centro de Recursos de Seguridad Informática del NIST tiene » una explicación de los algoritmos actualmente aprobados por los Estándares Federales de Procesamiento de Información de los Estados Unidos.
  Precaución

  Algunos de los primeros algoritmos criptográficos, como `"md4"`, `"md5"` y `"sha1"`, han demostrado ser propensos a ataques de colisión y generalmente se recomienda no utilizarlos más para aplicaciones criptográficas.

Consulte también las preguntas frecuentes sobre el Hashing Seguro de Contraseñas para obtener información sobre las mejores prácticas para el uso de funciones hash en el manejo de contraseñas.

- Instalación/Configuración
  - Instalación
  - Tipos de recursos
- Constantes predefinidas
- HashContext — La clase HashContext
  - HashContext::__construct — Constructor privado para prohibir la instanciación directa
  - HashContext::__debugInfo — Devuelve información de depuración sobre el contexto de hash
  - HashContext::__serialize — Serializa el objeto HashContext
  - HashContext::__unserialize — Deserializa el parámetro data en un objeto HashContext
- Funciones de hash
  - hash — Genera un valor de hachado (huella digital)
  - hash_algos — Devuelve una lista de los algoritmos de hash registrados
  - hash_copy — Copia un contexto de hachado
  - hash_equals — Comparación de strings resistente a ataques temporales
  - hash_file — Genera un valor de hash utilizando el contenido de un fichero dado
  - hash_final — Finaliza un hachaje incremental y devuelve el resultado de la huella digital
  - hash_hkdf — Genera una derivación de clave HKDF a partir de una clave de entrada proporcionada
  - hash_hmac — Genera un valor de clave de hash utilizando el método HMAC
  - hash_hmac_algos — Devuelve una lista de algoritmos de hash registrados adecuados para hash_hmac
  - hash_hmac_file — Genera un valor de clave de hash utilizando el método HMAC y el contenido de un fichero dado
  - hash_init — Inicializa un contexto de hachado incremental
  - hash_pbkdf2 — Genera una clave PBKDF2 derivada de la contraseña proporcionada
  - hash_update — Añade datos en el contexto de hash activo
  - hash_update_file — Se añaden datos en un contexto de hash activo a partir de un fichero
  - hash_update_stream — Introduce datos en un contexto de hash activo desde un flujo abierto

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