Dans PHP, la fonction hash_update_stream () est un outil très utile pour calculer étape par étape la valeur de hachage d'un flux de données (comme un fichier). Cette fonction est généralement utilisée pour vérifier l'intégrité d'un fichier et s'assurer que le fichier n'est pas falsifié pendant la transmission ou le stockage. Cet article présentera comment utiliser la fonction hash_update_stream () pour vérifier l'intégrité d'un fichier.
hash_update_stream () est une fonction fournie par PHP pour mettre à jour la valeur d'un contexte de hachage. Son objectif est de calculer progressivement la valeur de hachage du fichier en traitant un flux de données donné (généralement un fichier).
La syntaxe est la suivante:
bool hash_update_stream ( resource $context , resource $file_handle [, int $length = 8192 ] )
$ Context : Hash Context Resource, généralement créé par la fonction hash_init () .
$ file_handle : une poignée de fichier déjà ouverte (par exemple, un fichier ouvert via fopen () ).
$ Longueur : Nombre d'octets lus à chaque fois lors de la lecture du flux, la valeur par défaut est de 8192 octets.
La vérification de l'intégrité des fichiers est un moyen clé pour s'assurer que les fichiers ne sont pas modifiés ou corrompus pendant le stockage ou le transfert. Dans de nombreux scénarios d'application, la garantie de l'intégrité du fichier est cruciale pour la sécurité et la cohérence des données.
Par exemple, vous pouvez vérifier que les fichiers téléchargés à partir d'un serveur ont été falsifiés pendant le transfert, ou vérifier que les fichiers stockés localement ne sont pas corrompus. À ce stade, vous pouvez confirmer si le fichier reste le même en comparant la valeur de hachage du fichier.
Nous pouvons utiliser hash_update_stream () pour lire le fichier étape par étape et calculer sa valeur de hachage. Avec cette approche, nous pouvons nous assurer que chaque partie du contenu du fichier est traitée et enfin obtenir le hachage complet du fichier. Si un fichier change à tout moment pendant le transfert ou le stockage, sa valeur de hachage changera, qui peut être utilisée pour détecter l'intégrité du fichier.
Voici un exemple simple montrant comment utiliser la fonction hash_update_stream () pour vérifier l'intégrité du fichier.
<?php
// Créer un contexte de hachage
$context = hash_init('sha256');
// Ouvrir le fichier
$file_path = 'path/to/your/file.txt';
$file = fopen($file_path, 'rb');
if (!$file) {
die('无法Ouvrir le fichier');
}
// utiliser hash_update_stream() Calculez progressivement la valeur de hachage du fichier
while (!feof($file)) {
// Chaque lecture 8192 Octets et mettre à jour la valeur de hachage
hash_update_stream($context, $file, 8192);
}
// Obtenez la valeur de hachage finale du fichier
$hash = hash_final($context);
// La valeur de hachage du fichier de sortie
echo "La valeur de hachage du fichier est: " . $hash . "\n";
// Fermez le fichier
fclose($file);
// Supposons que vous avez précédemment stocké le hachage correct du fichier
$correct_hash = 'Valeur de hachage correcte pré-stockée';
// Vérifiez l'intégrité du fichier
if ($hash === $correct_hash) {
echo "La vérification de l'intégrité du fichier a été adoptée!\n";
} else {
echo "La vérification de l'intégrité du fichier a échoué!\n";
}
?>
Dans cet exemple, nous créons d'abord un contexte de hachage à l'aide de la fonction hash_init () . Ensuite, nous calculons progressivement la valeur de hachage du fichier en ouvrant le fichier et en utilisant la fonction hash_update_stream () . Après avoir lu le fichier, nous utilisons hash_final () pour obtenir la valeur de hachage finale du fichier et la comparer avec la valeur de hachage correcte stockée précédemment pour vérifier l'intégrité du fichier.
La fonction hash_update_stream () consiste à lire des fichiers étape par étape pour les calculs de hachage, ce qui est très utile pour gérer les fichiers volumineux car il ne charge pas le fichier entier en mémoire à la fois.
Assurez-vous que le fichier a les droits d'accès corrects lors de la lecture, sinon il peut faire en sorte que le fichier échoue ou lise à l'échec.
hash_update_stream () convient aux flux de fichiers, aux flux de données et à d'autres types de flux, et peut être très commodément utilisé pour le calcul de hachage des données de streaming.
hash_init () : initialise un contexte de hachage et spécifie un algorithme de hachage (par exemple, SHA256 ).
hash_update () : la valeur utilisée pour mettre à jour le contexte de hachage.
hash_final () : obtient la valeur de hachage finale.
L'utilisation de la fonction hash_update_stream () pour vérifier l'intégrité du fichier est une technique très efficace. En lisant progressivement le fichier et en calculant la valeur de hachage, nous pouvons nous assurer que le fichier n'est pas falsifié ou corrompu pendant la transmission et le stockage. Dans les applications pratiques, vous pouvez appliquer cette méthode à plusieurs scénarios tels que le téléchargement de fichiers, la vérification de téléchargement et la vérification de l'intégrité des fichiers.