La vérification de l'intégrité des données du fichier fait généralement référence à la vérification si un fichier a été falsifié ou endommagé pendant la transmission ou le stockage. Pour assurer l'intégrité des fichiers, un algorithme de hachage est généralement utilisé. L'algorithme de hachage convertit le contenu d'un fichier en une chaîne de longueur fixe appelée "hachage" ou "résumé". Si le contenu du fichier change, sa valeur de hachage correspondante changera également.
Dans PHP, la fonction HASH_FINAL est utilisée pour retourner le résultat final du contexte de hachage. Cette fonction est généralement utilisée conjointement avec Hash_Init et Hash_update pour gérer les calculs de hachage des données de fichiers ou de chaînes. La syntaxe de base est la suivante:
string hash_final ( resource $context [, bool $raw_output = false ] )
$ context est une ressource de contexte de hachage renvoyé par hash_init .
$ raw_output est un paramètre facultatif, par défaut en false , ce qui signifie que la valeur de hachage est retournée au format hexadécimal. Si elle est définie sur true , la valeur de hachage binaire d'origine est renvoyée.
FILE_PUT_CONTENTS est une fonction de fonctionnement du fichier dans PHP qui écrit des données dans un fichier. Sa syntaxe de base est la suivante:
int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )
$ nom de fichier est le nom de fichier à écrire.
$ Les données sont les données à rédiger.
$ Flags est un paramètre facultatif qui indique le comportement lors de l'écriture, tels que de remplacer les données de fichier ou d'ajouter.
$ context est un paramètre facultatif qui représente le contexte de l'opération de fichier.
En combinant les fonctions hash_final et file_put_contents , nous pouvons implémenter un simple mécanisme de vérification d'intégrité du fichier. Voici les étapes détaillées du processus de mise en œuvre:
Initialiser le calcul du hachage : Tout d'abord, nous utilisons la fonction hash_init pour initialiser un contexte de hachage, spécifiant l'algorithme de hachage utilisé (par exemple, SHA256 ).
Lisez le contenu du fichier et mettez à jour le hash : utilisez la fonction hash_update pour lire le contenu du fichier et mettre à jour la valeur de hachage à chaque fois qu'il est lu.
Écrivez dans le fichier : écrivez le contenu du fichier dans le fichier spécifié via la fonction file_put_contents .
Générez la valeur de hachage du fichier : Enfin, la valeur de hachage finale est obtenue via la fonction HASH_FINAL et enregistrée dans le cadre du fichier ou stockée dans la base de données.
Voici un exemple de code pour implémenter la vérification de l'intégrité des données du fichier à l'aide des fonctions HASH_Final et File_put_contents :
<?php
// Chemin de fichier
$filePath = 'path/to/your/file.txt';
// Initialiser le contexte du hachage
$context = hash_init('sha256');
// Lire le contenu du fichier et mettre à jour la valeur de hachage
$fileContent = file_get_contents($filePath);
hash_update($context, $fileContent);
// Obtenez la valeur de hachage finale
$hashValue = hash_final($context);
// Écrivez le contenu du fichier dans le fichier cible
$targetFilePath = 'path/to/your/destination/file.txt';
file_put_contents($targetFilePath, $fileContent);
// Enregistrer les valeurs de hachage dans un fichier ou une base de données(Pour une vérification ultérieure)
$hashFilePath = 'path/to/your/file_hash.txt';
file_put_contents($hashFilePath, $hashValue);
// Valeur de hachage de sortie
echo "La valeur de hachage du fichier est: " . $hashValue;
?>
Une fois que le contenu du fichier et la valeur de hachage correspondante ont été enregistrés, nous pouvons vérifier l'intégrité du fichier via les étapes suivantes:
Lisez le contenu du fichier : Tout d'abord, lisez le contenu du fichier cible.
Calculez la valeur de hachage du fichier : Ensuite, utilisez le même algorithme de hachage pour calculer la valeur de hachage du fichier.
Comparez le hachage : Enfin, comparez la valeur de hachage calculée avec la valeur de hachage enregistrée. Si les deux sont cohérents, cela signifie que le fichier n'a pas été falsifié; S'il est incohérent, cela signifie que le contenu du fichier a changé.
Voici un exemple de code pour vérifier l'intégrité du fichier:
<?php
// Lisez la valeur de hachage enregistrée
$storedHash = file_get_contents('path/to/your/file_hash.txt');
// Lisez le contenu du fichier cible
$fileContent = file_get_contents('path/to/your/destination/file.txt');
// Initialiser le contexte du hachage并计算文件哈希值
$context = hash_init('sha256');
hash_update($context, $fileContent);
$calculatedHash = hash_final($context);
// Comparez les valeurs de hachage
if ($storedHash === $calculatedHash) {
echo "La vérification de l'intégrité du fichier a été adoptée,Le fichier n'a pas été falsifié。";
} else {
echo "La vérification de l'intégrité du fichier a échoué,Le fichier a peut-être été falsifié。";
}
?>
En combinant les fonctions HASH_FINAL et FILE_PUT_CONTENTS de PHP, nous pouvons implémenter un mécanisme de vérification de l'intégrité des données de fichier simple. Dans le développement réel, nous pouvons utiliser cette méthode pour nous assurer que les données du fichier pendant le stockage ou la transmission ne sont pas falsifiées. Pour améliorer la sécurité, il est recommandé de choisir un algorithme de hachage avec une sécurité plus élevée, tels que SHA256 ou SHA512 , et combiner d'autres mesures de sécurité pour protéger l'intégrité des données de fichiers.