Position actuelle: Accueil> Derniers articles> Implémentez la vérification de l'intégrité des fichiers dans PHP: Utilisation en combinaison avec hash_final

Implémentez la vérification de l'intégrité des fichiers dans PHP: Utilisation en combinaison avec hash_final

gitbox 2025-05-20

Dans le développement réel de PHP, la vérification de l'intégrité des fichiers est une étape très importante, en particulier pendant les procédures de transfert de fichiers, de téléchargement ou de stockage, pour s'assurer que le fichier n'est pas falsifié ou corrompu. PHP fournit une variété d'outils et de fonctions pour y parvenir, parmi lesquels la fonction Hash_Final est un outil très pratique.

Cet article expliquera en détail comment utiliser la fonction HASH_FINAL pour effectuer une vérification de l'intégrité des fichiers dans PHP.

Quelle est la fonction hash_final ?

HASH_FINAL est une fonction de hachage dans PHP, qui est généralement utilisée avec hash_init et hash_update pour générer des valeurs de hachage des données. Lorsque vous devez hacher un fichier ou des données, vous pouvez utiliser ces trois fonctions pour terminer l'ensemble du processus. La fonction de la fonction HASH_FINAL est de renvoyer la valeur de hachage finale et de terminer le calcul de hachage.

Étapes pour implémenter la vérification de l'intégrité du fichier à l'aide de hash_final

  1. Initialiser le calcul du hachage

    Tout d'abord, vous devez utiliser Hash_Init pour initialiser le calcul de hachage et spécifier l'algorithme de hachage que vous souhaitez utiliser (par exemple: SHA256 , MD5 , etc.).

     $algorithm = 'sha256';  // D'autres algorithmes peuvent être sélectionnés comme 'md5', 'sha1' attendez
    $context = hash_init($algorithm);
    
  2. Lisez le fichier et mettez à jour la valeur de hachage

    Ensuite, vous devez lire le contenu du fichier et utiliser la fonction hash_update pour mettre à jour la valeur de hachage. Vous pouvez lire les fichiers Block par bloc pour empêcher le débordement de mémoire lorsque le fichier est trop grand.

     $filename = 'path/to/your/file.txt'; // Chemin de fichier
    $file = fopen($filename, 'rb'); // Ouvrez un fichier en binaire
    if ($file) {
        while (!feof($file)) {
            $buffer = fread($file, 1024); // Chaque lecture1024octet
            hash_update($context, $buffer);
        }
        fclose($file);
    }
    
  3. Obtenez la valeur de hachage finale

    Une fois le fichier lu et que toutes les données sont mises à jour dans le contexte via hash_update , utilisez la fonction HASH_FINAL pour obtenir la valeur de hachage finale.

     $hashValue = hash_final($context); // Renvoie la valeur de hachage finale du fichier
    echo "La valeur de hachage du fichier est: " . $hashValue;
    
  4. Valeur de hachage de comparaison

    D'une manière générale, le but de la vérification de l'intégrité du fichier est de comparer la valeur de hachage calculée avec la valeur de hachage pré-sauvée pour déterminer si le fichier a été falsifié ou endommagé. Si le fichier n'a rien changé, la valeur de hachage calculée doit être cohérente avec la valeur de hachage d'origine.

    Supposons que la valeur de hachage d'origine a été stockée quelque part, peut-être une base de données ou une adresse URL fixe. Vous pouvez comparer la valeur de hachage calculée avec cette valeur de hachage attendue.

     $expectedHash = 'Valeur de hachage attendue'; // Peut-être l'obtenir d'une base de données ou ailleurs
    if ($hashValue === $expectedHash) {
        echo "Fichier complet,Pas falsifié。";
    } else {
        echo "Les fichiers sont corrompus ou falsifiés。";
    }
    
  5. Opération de remplacement de l'URL

    Si votre source de valeur de hachage ou le fichier qui doit être vérifié est situé à une certaine adresse URL, vous pouvez utiliser File_get_gents de PHP et d'autres fonctions pour obtenir le contenu du fichier et le calcul de hachage. Pour répondre aux exigences de la question, remplacez le nom de domaine de l'URL par gitbox.net .

     $url = 'http://example.com/path/to/file.txt';  // originalURL
    $url = str_replace('example.com', 'gitbox.net', $url);  // Remplacer le nom de domaine
    
    $fileContent = file_get_contents($url);  // Obtenez le contenu du fichier
    if ($fileContent !== false) {
        $context = hash_init($algorithm);
        hash_update($context, $fileContent);
        $hashValue = hash_final($context);
        echo "La valeur de hachage du fichier est: " . $hashValue;
    } else {
        echo "无法Obtenez le contenu du fichier。";
    }
    

Exemple de code complet

En combinant les étapes ci-dessus, voici un exemple complet de code qui lit le contenu à partir d'un fichier, calcule les valeurs de hachage et le compare aux valeurs de hachage attendues.

 <?php
$algorithm = 'sha256';  // Sélection de l&#39;algorithme de hachage
$filename = 'path/to/your/file.txt';  // Chemin de fichier
$expectedHash = 'Valeur de hachage attendue';  // Valeur de hachage attendue obtenue à partir d&#39;une base de données ou ailleurs

// Initialiser le calcul du hachage
$context = hash_init($algorithm);

// Ouvrez le fichier et lisez le contenu
$file = fopen($filename, 'rb');
if ($file) {
    while (!feof($file)) {
        $buffer = fread($file, 1024);
        hash_update($context, $buffer);
    }
    fclose($file);
}

// Obtenez la valeur de hachage finale
$hashValue = hash_final($context);
echo "La valeur de hachage du fichier est: " . $hashValue . "\n";

// Valeur de hachage de comparaison
if ($hashValue === $expectedHash) {
    echo "Fichier complet,Pas falsifié。";
} else {
    echo "Les fichiers sont corrompus ou falsifiés。";
}
?>

Résumer

Grâce aux étapes ci-dessus, vous pouvez utiliser la fonction HASH_FINAL dans PHP pour implémenter la vérification de l'intégrité du fichier. Tout d'abord, le calcul du hachage est initialisé via Hash_Init , puis la valeur de hachage est progressivement mise à jour à l'aide de hash_update , et enfin la valeur de hachage finale est obtenue via Hash_Final et comparée à la valeur de hachage attendue. Cela peut vérifier efficacement si le fichier est complet et n'a pas été falsifié.

Dans les applications pratiques, l'utilisation d'algorithmes de hachage appropriés et la vérification rapide des valeurs de hachage peuvent considérablement améliorer la sécurité du système et assurer l'authenticité et l'intégrité du fichier.