In PHP sind Hash_Update_Stream und Hash_File () Funktionen, die zur Erzeugung von Hash -Werten verwendet werden. Sie werden jedoch unterschiedlich verwendet, was die Hash -Werte verursachen kann, die sie in einigen Fällen inkonsistent erzeugen. Dieser Artikel wird diese beiden Funktionen analysieren und die Konsistenz ihrer Hash -Werte untersuchen.
Die Funktion von Hash_Update_Stream wird verwendet, um einen Hash -Wert über einen Stream nach und nach zu aktualisieren. Bei der Verwendung dieser Funktion müssen wir einen Ressourcenstrom (z. B. einen Dateistrom) bereitstellen und dann die Hash -Berechnung aktualisieren, indem Sie mehrmals Hash_Update_Stream aufrufen. Diese Methode eignet sich normalerweise für Szenarien, in denen Daten nach Block gelesen werden müssen.
<?php
$hash = hash_init('sha256'); // Der Initialisierungshashing -Algorithmus ist sha256
$fp = fopen('sample.txt', 'rb'); // Öffnen Sie den Dateistrom
// Aktualisieren Sie den Hash -Wert über Stream
while (!feof($fp)) {
$data = fread($fp, 4096); // Lesen Sie den Dateiinhaltsblock nach Block
hash_update_stream($hash, $data); // Hash -Wert aktualisieren
}
fclose($fp);
// Holen Sie sich den endgültigen Hash -Wert
echo hash_final($hash);
?>
Im Gegensatz zu Hash_Update_Stream ist Hash_file () eine einfachere Funktion, die die Datei direkt ohne Block lesen muss. Es wird automatisch das Lesen der Datei intern behandelt und generiert Hash -Werte.
<?php
// verwenden hash_file Berechnen Sie direkt den Hash -Wert der Datei
$hash_value = hash_file('sha256', 'sample.txt');
echo $hash_value;
?>
Sowohl Hash_Update_Stream als auch Hash_File () können verwendet werden, um Hash -Werte für Dateien zu generieren, sie werden jedoch geringfügig unterschiedlich berechnet, was zu Unterschieden in den Hash -Werten führen kann. Obwohl diese beiden Funktionen theoretisch die gleichen Ergebnisse liefern sollten, da Hash_Update_Stream den Hash -Wert allmählich aktualisiert und vom Lesen des Dateistroms abhängt, Hash_file () Hash -Berechnungen in der gesamten Datei. In einigen Fällen können Faktoren wie die Puffergröße des Lesens der Stream die Reihenfolge der gelesenen Datei auf die Erzeugung des Hash -Werts beeinflussen.
In Standardnutzungsszenarien sollten die Hash -Werte, die von Hash_Update_Stream und Hash_File () generiert werden, gleich, wenn sich die Datei nicht ändert und es keine anderen Ablenkungen gibt. Dies liegt daran, dass sie den gleichen Hashing -Algorithmus verwenden und die bei der Berechnung des Hashing verwendeten Daten genau konsistent sind.
Hash_Update_Stream ist eine Methode zur allmählichen Aktualisierung von Hash -Werten, die für Szenarien mit großen Dateien oder Streaming -Daten geeignet sind.
Hash_file () ist eine bequeme Methode zur Berechnung des Hash -Werts einer Datei, die für Hashing -Berechnungen für Dateien direkt geeignet ist.
Theoretisch sollten unter Standardbedingungen die von Hash_Update_Stream und Hash_File () generierten Hash -Werte konsistent sein, aber es ist zu beachten, dass unterschiedliche Lesemethoden die Berechnungsergebnisse beeinflussen können.
Wenn Sie in der tatsächlichen Entwicklung einfach den Hash -Wert einer Datei berechnen, ist es die einfachste und effiziente Wahl, wenn Sie Hash_file () verwenden. Wenn Sie die Daten Schritt für Schritt lesen und den Hash -Wert aktualisieren müssen, ist Hash_Update_Stream eine bessere Wahl.