In PHP wird die Verwendung von Hash -Funktionen durch die Hash () -Serie von Funktionen implementiert. Die Hash () -Funktion selbst kann zwei Hauptparameter akzeptieren: Algorithmus und Daten. Es berechnet sofort den Hash der Daten und gibt das Ergebnis zurück. Aber manchmal müssen wir Schritt für Schritt größere Daten verarbeiten, insbesondere wenn die Daten zu groß sind, um in den Speicher zu laden. Zu diesem Zeitpunkt sind die Funktionen von Hash_Update und Hash_Final nützlich.
Hash_update
Die Funktion von Hash_Update wird verwendet, um Daten (z. B. Dateien oder Zeichenfolgen) in Hash -Berechnung in Stapeln zu füttern. Es fügt der vorhandenen Hash -Berechnung neue Daten hinzu. Durch mehrmals Hash_Update können große Datenblöcke Schritt für Schritt verarbeitet werden.
Grammatik:
hash_update ( resource $context , string $data ) : bool
$ context : Eine Hash -Kontext -Ressource, die über die Hash_init -Funktion erstellt werden kann.
$ Daten : Daten, die zur aktuellen Hash -Berechnung hinzugefügt werden müssen.
Hash_Final
Die Funktion Hash_Final wird verwendet, um die Hash -Berechnung zu vervollständigen und den endgültigen Hash -Wert zurückzugeben, nachdem alle Daten von Hash_Update aktualisiert wurden.
Grammatik:
hash_final ( resource $context , bool $raw_output = false ) : string
$ context : Hash -Kontext, der mit Hash_Update verbunden ist.
$ raw_output : Wenn wahr , geben Sie die ursprünglichen Binärdaten zurück; Wenn falsch , geben Sie den Hash -Wert in der hexadezimalen Darstellung zurück.
Als nächstes verwenden wir ein bestimmtes Beispiel, um zu erklären, wie Hash_Update und Hash_Final verwendet werden, um die Hash -Berechnung zu vervollständigen.
<?php
// Erstellen a SHA256 Hash -Kontext
$context = hash_init('sha256');
// Daten in Stapeln aktualisieren
$data1 = "Hello, this is the first part of the data.";
$data2 = " And this is the second part of the data.";
$data3 = " Finally, here is the third part of the data.";
hash_update($context, $data1); // Aktualisieren Sie den ersten Teil der Daten
hash_update($context, $data2); // Aktualisieren Sie den zweiten Teil der Daten
hash_update($context, $data3); // Aktualisieren Sie den dritten Teil der Daten
// Vollständige Hash -Berechnung und erhalten Sie das Ergebnis
$hash = hash_final($context);
// Den endgültigen Hash -Wert ausgeben
echo "The computed hash is: " . $hash;
?>
Initialisieren Sie den Hash -Kontext <br> Verwenden Sie Hash_init ('SHA256'), um eine Hash -Kontextressource zu erstellen. Hier haben wir den SHA256 -Algorithmus ausgewählt, aber Sie können verschiedene Hash -Algorithmen entsprechend Ihren Anforderungen wie MD5 , SHA1 usw. auswählen.
Daten nach und nach Daten <br> aktualisieren Verwenden Sie die Funktion Hash_Update , um die Daten in die Hash -Berechnung in Stapeln zu füttern. In unserem Beispiel werden die Daten in drei Teile unterteilt, und die Daten werden im Hash -Kontext allmählich über drei Hash_Update -Zeiten hinzugefügt.
Vollständige Hash -Berechnung und Ausgabe des Ergebnisses <br> Verwenden Sie die Funktion Hash_final , um die Hash -Berechnung zu vervollständigen und den endgültigen Hash -Wert zurückzugeben. Sie können den Hash -Wert als eine rohe binäre oder hexadezimale Zeichenfolge zurückgeben. Standardmäßig werden hexadezimale Saiten zurückgegeben.
The computed hash is: 1c7d76e24a56bc69b890f3f8720a2eaf6cf4bb4e3ff315153f0a5e089b131b3c
Bei der Verarbeitung großer Datenmengen kann die direkte Verwendung der Hash () -Funktion zur Berechnung von Hash -Werten gleichzeitig zu unzureichendem Speicher führen, insbesondere bei der Verarbeitung großer Dateien. Daher kann die Verwendung von Hash_Update zur Aktualisierung von Hash -Berechnungen in Stapeln effektiv Speicher sparen und sicherstellen, dass selbst eine sehr große Datenmenge zur reibungslosen Berechnung von Hash verwendet werden kann.
Darüber hinaus bieten Hash_Update und Hash_Final auch Flexibilität, um die Hash-Werte Schritt für Schritt im Datenstrom zu berechnen, was besonders wichtig ist, wenn Echtzeitdaten oder Lesedateien blockiert werden.
Dateiüberprüfung : Beim Hochladen oder Herunterladen großer Dateien kann der Hash -Wert der Datei nacheinander berechnet werden, um sicherzustellen, dass die Datei während des Übertragungsprozesses nicht beschädigt wird.
Kennwortspeicher : Beim Speichern von Benutzerkennwörtern wird ein Hash -Algorithmus normalerweise zum Verschlüsseln des Kennworts verwendet, das die Sicherheit verbessern kann, indem die Kennwortdaten schrittweise aktualisiert werden.
Datenstromverschlüsselung : Für die Echtzeitverschlüsselung von Big-Data-Streams kann die Verarbeitung von Hash_Update und Hash_Final die Leistung und die Effizienz des Speicherverbrauchs verbessern.
Die Funktionen von PHP von Hash_Update und Hash_Final sind leistungsstarke Tools für die Behandlung von Big Data und Schritt-für-Schritt-Computing-Hash-Werten. Durch die schrittweise Aktualisierung des Hash -Kontextes kann der Speicher effektiv verwaltet werden und die Integrität und Effizienz von Hash -Berechnungen können sichergestellt werden. In der tatsächlichen Entwicklung kann der rationale Einsatz dieser beiden Funktionen Entwicklern helfen, Hash -Berechnungsaufgaben effizient zu erledigen.