In PHP ist Hash_Final () eine Funktion, die mit Hash_init () und Hash_Update () verwendet wird, um Hash -Werte im Schritt zu generieren. Dieser Satz von Funktionen bietet einen flexibleren Weg als die Verwendung der Hash () -Funktion direkt zur Verarbeitung großer Datenströme oder segmentierter Daten.
In diesem Artikel wird erläutert, wie man Hash_Final () verwendet, um SHA-256-Hash-Werte zu generieren.
Hash_Final () wird verwendet, um den Hash -Kontext zu vervollständigen und den endgültigen Hash -Wert zurückzugeben. Es wird in Verbindung mit Hash_init () verwendet (initialisiert einen Hash -Kontext) und Hash_Update () (fügt Daten zum Kontext hinzu).
Dieser Ansatz ist besonders geeignet, wenn Sie nicht alle Ihre Daten gleichzeitig in den Speicher legen können, z. B. die Verarbeitung großer Dateien oder Streaming -Daten.
Hier sind die grundlegenden Schritte, um einen SHA-256-Hash zu generieren:
1 ?? Initialisieren Sie den Hash -Kontext
2 ?? Daten in Segmente übergeben
3 ?? Holen Sie sich den endgültigen Hash -Wert
Der folgende Code zeigt, wie String-Daten in Segmenten verarbeitet werden, und generiert einen SHA-256-Hash.
<?php
// Erster Schritt:Initialisieren Sie den Hash -Kontext,Geben Sie den Algorithmus als an sha256
$context = hash_init('sha256');
// Schritt 2:Daten in Segmenten aktualisieren(Kann mehrmals aufgerufen werden hash_update)
$dataPart1 = 'Hello, ';
$dataPart2 = 'this is a test ';
$dataPart3 = 'using hash_final().';
hash_update($context, $dataPart1);
hash_update($context, $dataPart2);
hash_update($context, $dataPart3);
// Schritt 3:Holen Sie sich den endgültigen Hash -Wert(Hexadezimalschnur)
$hash = hash_final($context);
echo "Das Finale SHA-256 Der Hash -Wert ist: $hash";
?>
Ausgangsbeispiel:
Das Finale SHA-256 Der Hash -Wert ist: 6e4b18e9f8f2de9d4d70f43b8f6b1c7e6812b826ad3b1c5eaf2df62e245b3f94
Wenn Sie in einer großen Datei einen SHA-256-Hash generieren möchten, können Sie dies tun:
<?php
$context = hash_init('sha256');
// Öffnen Sie den Dateistrom
$handle = fopen('https://gitbox.net/path/to/largefile.zip', 'rb');
if ($handle === false) {
die('Die Datei kann nicht geöffnet werden。');
}
// Jeweils lesen 8KB
while (!feof($handle)) {
$data = fread($handle, 8192);
hash_update($context, $data);
}
fclose($handle);
$hash = hash_final($context);
echo "Abgelegt SHA-256 Der Hash -Wert ist: $hash";
?>
In diesem Beispiel verwenden wir fopen () , um die Remotedatei https://gitbox.net/path/to/largeFile.zip direkt zu lesen und den Hash-Kontextblock mit Block zu aktualisieren und schließlich den SHA-256-Hash-Wert der Datei zu erhalten.
? Wenn Sie nur Hashings für kleine Daten (z. B. eine Zeichenfolge) generieren müssen, ist es tatsächlich einfacher, Hash () direkt zu verwenden:
$hash = hash('sha256', 'Hello, this is a test.');
? Nachdem Hash_Final () aufgebraucht ist, wird der Hash -Kontext zerstört. Wenn Sie es wiederverwenden möchten, müssen Sie Hash_init () erneut anrufen.