# HASH Message Digest Framework

# Einführung

Diese Erweiterung bietet Funktionen für die direkte oder inkrementelle Verarbeitung von Nachrichten beliebiger Länge unter Verwendung verschiedener Hash-Algorithmen. Dazu gehören auch die Erzeugung von HMAC-Werten und Schlüsselableitungen einschließlich HKDF und PBKDF2.

Es gibt im Wesentlichen drei Kategorien von Hash-Algorithmen. Siehe hash_algos() für eine vollständige Liste.

- Prüfsummenalgorithmen (z. B. `"crc32b"` oder `"adler32"`): Diese werden zur Berechnung von Prüfsummen verwendet, was z. B. nützlich ist, um Übertragungsfehler zu erkennen. Sie sind in der Regel sehr schnell. Da diese Algorithmen oft Werte erzeugen, die leicht zu "erraten" sind oder manipuliert werden können, um Kollisionen zu erzeugen, sind sie für kryptografische Zwecke völlig ungeeignet.
- Nicht-kryptografische Algorithmen (z. B. die xxHash-Familie): Diese Algorithmen werden häufig zur Berechnung von Hashwerten für Hashtabellen verwendet, weil sie darauf ausgelegt sind, eine gute Verteilung über beliebige Zeichenketten zu erzeugen. Auch sie sind im Allgemeinen schnell, aber ebenfalls nicht für kryptografische Zwecke geeignet.
- Kryptographische Algorithmen (z. B. die SHA-2-Familie): Diese Algorithmen wurden entwickelt, um Hashwerte zu erzeugen, die die Eingaben darstellen, aber weder erraten werden können noch anfällig für Kollisionen sind. Die Leistung ist oft zweitrangig, aber moderne Hardware unterstützt oft eine spezielle Handhabung für diese Algorithmen, die PHP zu nutzen versucht, wenn sie verfügbar ist. Das Computer Security Resource Center des NIST bietet eine » Beschreibung der Algorithmen, die derzeit von den United States Federal Information Processing Standards (FIPS) zugelassen sind.
  Achtung

  Einige der frühen kryptographischen Algorithmen wie `"md4"`, `"md5"` und `"sha1"` haben sich als anfällig für Kollisionsangriffe erwiesen und es wird allgemein empfohlen, diese nicht mehr für kryptographische Anwendungen zu verwenden.

Siehe auch die FAQ zum sicheren Hashing von Passwörtern für Informationen über bewährte Verfahren bei der Verwendung von Hash-Funktionen im Umgang mit Passwörtern.

- Installation/Konfiguration
  - Installation
  - Ressource-Typen
- Vordefinierte Konstanten
- HashContext — The HashContext class
  - HashContext::__construct — Private constructor to disallow direct instantiation
  - HashContext::__serialize — Serializes the HashContext object
  - HashContext::__unserialize — Deserializes the data parameter into a HashContext object
- Hash-Funktionen
  - hash — Berechnet den Hash einer Nachricht
  - hash_algos — Liefert eine Liste der verfügbaren Hashing-Algorithmen
  - hash_copy — Dupliziert einen Hash-Kontext
  - hash_equals — Timing attack safe string comparison
  - hash_file — Berechnet den Hash des Inhalts einer Datei
  - hash_final — Schließt einen schrittweisen Hashing-Vorgang ab und liefert sein Ergebnis
  - hash_hkdf — Generate a HKDF key derivation of a supplied key input
  - hash_hmac — Berechnet einen Hash mit Schlüssel unter Verwendung von HMAC
  - hash_hmac_algos — Return a list of registered hashing algorithms suitable for hash_hmac
  - hash_hmac_file — Berechnet einen Hash einer Datei mit Schlüssel unter Verwendung von HMAC
  - hash_init — Initialisiert einen schrittweisen Hashing-Kontext
  - hash_pbkdf2 — Generate a PBKDF2 key derivation of a supplied password
  - hash_update — Fügt Daten an einen aktiven Hash-Kontext an
  - hash_update_file — Fügt Daten aus einer Datei an einen aktiven Hash-Kontext an
  - hash_update_stream — Fügt Daten aus einem Stream an einen aktiven Hash-Kontext an

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