PHP 8.4.2 Released!

hash_init

(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)

hash_initInitialisiert einen schrittweisen Hashing-Kontext

Beschreibung

hash_init(
    string $algo,
    int $flags = 0,
    #[\SensitiveParameter] string $key = "",
    array $options = []
): HashContext

Parameter-Liste

algo

Der Name des gewählten Hash-Algorithmus (z. B. "sha256"). Für eine Liste der unterstützten Algorithmen, siehe hash_algos().

Hinweis:

Wenn das Flag HASH_HMAC angegeben ist, sind nicht-kryptografische Hash-Funktionen nicht erlaubt.

flags

Optionale Einstellungen für die Erzeugung von Hashes. Aktuell wird nur eine Option unterstützt: HASH_HMAC. Wenn diese gesetzt ist, muss der Parameter key angegeben werden.

key

Ein geheimer Schlüssel zur Verwendung mit dem HMAC-Verfahren. Wenn HASH_HMAC bei flags angegeben ist, muss key angegeben werden.

options

Ein Array mit Optionen für die verschiedenen Hash-Algorithmen. Derzeit wird von den MurmurHash-Varianten nur der Parameter "seed" unterstützt.

Rückgabewerte

Gibt einen Hashing-Kontext zur Nutzung mit hash_update(), hash_update_stream(), hash_update_file(), und hash_final() zurück.

Fehler/Exceptions

  • Löst eine ValueError-Exception aus, wenn algo nicht bekannt ist oder eine nicht-kryptographische Hash-Funktion ist oder wenn key leer ist.
  • Wenn in options Konfigurationsoptionen vom falschen Typ übergeben werden, wird nun ein Fehler der Stufe E_DEPRECATED ausgegeben, da sie falsch interpretiert werden können. In Zukunft wird dies ein ValueError sein.

Changelog

Version Beschreibung
8.4.0 Die Übergabe von Optionen eines falschen Typs ist nun veraltet.
8.1.0 Der Parameter options wurde hinzugefügt.
8.0.0 Löst nun eine ValueError-Exception aus, wenn algo unbekannt ist oder eine nicht kryptographische Hash-Funktion ist oder wenn key leer ist. Zuvor wurde false zurückgegeben und eine Meldung der Stufe E_WARNING ausgegeben.
7.2.0 Die Verwendung nicht-kryptografischer Hashfunktionen (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) mit HASH_HMAC ist nicht mehr möglich.
7.2.0 Gibt nun einen HashContext anstatt einer Ressource zurück.

Beispiele

Beispiel #1 Beispiel für schrittweises Hashing

<?php
$hash
= hash('sha256', 'Franz jagt im komplett verwahrlosten Taxi quer durch Bayern.');

$ctx = hash_init('sha256');
hash_update($ctx, 'Franz jagt im komplett verwahrlosten ');
hash_update($ctx, 'Taxi quer durch Bayern.');
$incremental_hash = hash_final($ctx);

echo
$incremental_hash, PHP_EOL;
var_dump($hash === $incremental_hash);
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

0b3a381e71cda8f3abe88b1dc3eb9aa2a53fa033e9802878edd1959c267281a2
bool(true)

Siehe auch

  • hash_algos() - Liefert eine Liste der verfügbaren Hashing-Algorithmen
  • 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
  • hash_final() - Schließt einen schrittweisen Hashing-Vorgang ab und liefert sein Ergebnis

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top