# HASH Message Digest Framework

# Introduction

Cette extension fournit des fonctions qui peuvent être utilisées pour le traitement direct ou incrémental de messages de longueur arbitraire en utilisant une variété d'algorithmes de hachage, y compris la génération de valeurs HMAC et des dérivations de clés incluant HKDF et PBKDF2.

Il existe grosso modo trois catégories d'algorithmes de hachage, et une liste complète des algorithmes peut être trouvée dans la documentation pour hash_algos().

- Algorithmes de somme de contrôle (tels que `"crc32b"` ou `"adler32"`) : Ceux-ci sont utilisés pour calculer des sommes de contrôle, utiles dans des situations telles que la détection des erreurs de transmission. Ils sont souvent très rapides. Ces algorithmes génèrent souvent des valeurs facilement "devinables" ou peuvent être manipulés pour créer des collisions, ils sont donc totalement inadaptés à une utilisation cryptographique.
- Algorithmes non cryptographiques (comme la famille xxHash) : Ceux-ci sont souvent utilisés pour calculer des valeurs de hachage pour des tables de hachage, car ils sont conçus pour produire une bonne distribution sur des entrées de chaîne arbitraires. Ils sont également généralement rapides, mais aussi inadaptés à une utilisation cryptographique.
- Algorithmes cryptographiques (comme la famille SHA-2) : Ceux-ci sont conçus pour produire des valeurs de hachage représentatives de leurs entrées mais ne pouvant pas être devinées ni sujettes aux collisions. La performance est souvent une préoccupation secondaire, mais le matériel moderne supporte souvent une gestion spéciale pour ces algorithmes que PHP essaie d'utiliser lorsque disponible. Le Centre de ressources pour la sécurité informatique du NIST a » une explication des algorithmes actuellement approuvés par les Standards fédéraux de traitement de l'information des États-Unis.
  Attention

  Certains des premiers algorithmes cryptographiques, tels que `"md4"`, `"md5"`, et `"sha1"`, se sont avérés être sujets à des attaques par collision et il est généralement recommandé de ne plus les utiliser pour des applications cryptographiques.

Voir également la FAQ sur le hachage sécurisé des mots de passe pour des informations sur les meilleures pratiques d'utilisation des fonctions de hachage dans la gestion des mots de passe.

- Installation/Configuration
  - Installation
  - Types de ressources
- Constantes pré-définies
- HashContext — La classe HashContext
  - HashContext::__construct — Constructeur privé pour interdire l'instanciation directe
  - HashContext::__debugInfo — Retourne des informations de débogage sur le contexte de hachage
  - HashContext::__serialize — Sérialise l'objet HashContext
  - HashContext::__unserialize — Désérialise le paramètre data en un objet HashContext
- Fonctions Hash
  - hash — Génère une valeur de hachage (empreinte numérique)
  - hash_algos — Retourne une liste des algorithmes de hachage enregistrés
  - hash_copy — Copie un contexte de hachage
  - hash_equals — Comparaison de chaînes résistante aux attaques temporelles
  - hash_file — Génère une valeur de hachage en utilisant le contenu d'un fichier donné
  - hash_final — Finalise un hachage incrémental et retourne le résultat de l'empreinte numérique
  - hash_hkdf — Génère une dérivation de clé HKDF depuis une clé fournie
  - hash_hmac — Génère une valeur de clé de hachage en utilisant la méthode HMAC
  - hash_hmac_algos — Retourne la liste des algorithmes de hachage adaptés pour hash_hmac
  - hash_hmac_file — Génère une valeur de clé de hachage en utilisant la méthode HMAC et le contenu d'un fichier donné
  - hash_init — Initialise un contexte de hachage incrémental
  - hash_pbkdf2 — Génère une clé PBKDF2 dérivée du mot de passe fourni
  - hash_update — Ajoute des données dans le contexte de hachage actif
  - hash_update_file — Ajoute des données dans un contexte de hachage actif provenant d'un fichier
  - hash_update_stream — Ajoute des données dans un contexte de hachage actif d'un flux ouvert

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