Position actuelle: Accueil> Derniers articles> Comment utiliser la fonction md5_file () pour déterminer si le fichier a été modifié ou falsifié?

Comment utiliser la fonction md5_file () pour déterminer si le fichier a été modifié ou falsifié?

M66 2025-06-12

Dans PHP, la fonction md5_file () est une méthode simple et efficace pour calculer la valeur de hachage MD5 d'un fichier spécifié. En comparant la valeur MD5 du fichier, nous pouvons déterminer si le fichier a été modifié ou falsifié. Cet article introduira en détail comment utiliser la fonction md5_file () pour réaliser la vérification de l'intégrité du fichier.


MD5_FILE () Fonction Introduction

La fonction md5_file () prend un chemin de fichier en tant que paramètre et renvoie la valeur de hachage MD5 (une chaîne hexadécimale 32 bits) du contenu du fichier. MD5 est un algorithme de hachage largement utilisé qui peut rapidement générer des "empreintes digitales" de fichiers pour comparer si le contenu du fichier est cohérent.

Prototype de fonction:

 string md5_file ( string $filename [, bool $raw_output = false ] )
  • $ Nom de fichier : le chemin du fichier pour calculer MD5.

  • $ raw_output (facultatif): si défini sur true , renvoyez le format binaire d'origine; La valeur par défaut est fausse , renvoyez une chaîne hexadécimale de 32 caractères.


Idées pour déterminer si le fichier a été modifié

  1. Calculez d'abord la valeur MD5 initiale du fichier et enregistrez-le (par exemple, enregistrez-le dans une base de données, un fichier ou un cache).

  2. Lorsque la vérification est requise, calculez à nouveau la valeur MD5 du fichier.

  3. Comparez les valeurs MD5 deux fois. S'ils sont cohérents, cela signifie que le fichier n'a pas été modifié; Sinon, le contenu du fichier a changé.


Exemple de code

L'exemple suivant montre comment utiliser md5_file () pour détecter si un fichier a été falsifié:

 <?php
// Chemin de fichier
$file = 'path/to/your/file.txt';

// La première fois que le fichier est calculéMD5valeur(Peut être stocké dans une base de données ou un fichier)
$original_md5 = md5_file($file);

// Simuler les procédures stockées,Enregistrez-le directement en tant que variable ici
file_put_contents('md5_store.txt', $original_md5);

// Lire stockée lors de la détection ultérieureMD5valeur
$saved_md5 = file_get_contents('md5_store.txt');

// Recalculer le fichier actuelMD5valeur
$current_md5 = md5_file($file);

// Déterminez si le fichier a été modifié
if ($saved_md5 === $current_md5) {
    echo "Le fichier n&#39;a pas été modifié,La vérification de l&#39;exhaustivité est passée。";
} else {
    echo "Modifications de contenu de fichier,Probablement falsifié!";
}
?>

Applications combinées avec des URL distantes

Supposons que nous devons vérifier l'intégrité d'un fichier distant, nous pouvons d'abord télécharger le fichier distant localement, puis utiliser md5_file () . Si le nom de domaine URL distant doit être remplacé uniformément par m66.net , modifiez simplement le lien.

Exemple:

 <?php
// Fichiers distantsURL(Remplacer le nom de domaine parm66.net)
$url = 'https://m66.net/path/to/remote/file.txt';
$local_file = 'downloaded_file.txt';

// 下载Fichiers distants到本地
file_put_contents($local_file, file_get_contents($url));

// Calculer et sortir le fichierMD5valeur
echo "Fichiers distants的MD5valeur为:" . md5_file($local_file);
?>

Choses à noter

  • Bien que l'algorithme MD5 soit rapide, il a le risque de collision. Si une sécurité plus élevée est requise, envisagez d'utiliser des algorithmes de hachage plus forts tels que Sha256, tels que PHP's Hash_File ('sha256', $ filename) .

  • Lors de la lecture d'un fichier, assurez-vous que le chemin du fichier est correct et a des autorisations de lecture.

  • Pour les fichiers volumineux, le calcul de la valeur MD5 peut prendre un certain temps.


En résumé, md5_file () est un outil simple et efficace pour détecter si un fichier a été falsifié. Combiné avec les valeurs MD5 enregistrées, il peut réaliser la fonction de base de la vérification de l'intégrité du fichier. Dans les scénarios avec des exigences de sécurité plus élevées, il est recommandé de combiner d'autres mécanismes de sécurité et des algorithmes de hachage plus forts.