Dans le développement Web, la sécurité du transfert de fichiers et du stockage a toujours été un problème qui ne peut être ignoré. Pour garantir l'intégrité du fichier et empêcher le fichier d'être falsifié pendant le transfert, la vérification de la signature du fichier est une pratique courante et efficace. La fonction hash_update_stream () est l'un des outils importants de PHP pour gérer la vérification de la signature du fichier. Cet article présentera comment utiliser la fonction hash_update_stream () pour implémenter la vérification de la signature du fichier et assurer l'intégrité et la sécurité des fichiers.
La vérification de la signature du fichier est une méthode qui utilise un algorithme de hachage pour générer une signature numérique sur le contenu d'un fichier, puis vérifier l'intégrité du fichier via cette signature. Les algorithmes de hachage communs incluent MD5, SHA-1, SHA-256, etc. Ils aident à vérifier l'intégrité des fichiers pendant la transmission en générant des empreintes digitales de fichiers uniques.
Lorsque les fichiers sont transférés sur le réseau, vous pouvez rencontrer diverses menaces, telles que la falsification des fichiers, la perte de données, etc. Pour éviter ces problèmes, la vérification de la signature des fichiers peut nous aider à confirmer que le fichier n'a pas été falsifié et que son contenu est terminé.
La fonction hash_update_stream () dans PHP est utilisée pour mettre à jour les valeurs de hachage, ce qui est très efficace pour gérer les fichiers volumineux car il permet à la valeur de hachage d'être mise à jour étape par étape sans avoir besoin de charger le contenu de fichier entier en mémoire à la fois. Cette fonction est généralement utilisée avec les fonctions hash_init () et hash_final () pour terminer le processus de génération et de vérification de signature de fichiers.
La syntaxe de base de hash_update_stream () est la suivante:
bool hash_update_stream ( resource $context , resource $handle [, int $length = 1024 ] )
$ Context : Il s'agit du contexte de hachage créé par la fonction hash_init () .
$ Handle : la poignée du fichier du fichier, qui peut être obtenue via la fonction fopen () .
$ Longueur : le nombre d'octets lus à chaque fois que le hachage est mis à jour, par défaut à 1024 octets.
Tout d'abord, nous devons sélectionner un algorithme de hachage et initialiser un contexte de hachage. Dans ce cas, nous utiliserons l'algorithme SHA-256.
$algorithm = 'sha256';
$context = hash_init($algorithm);
Ensuite, nous ouvrons le fichier via la fonction fopen () et utilisons la fonction hash_update_stream () pour lire progressivement le contenu du fichier et mettre à jour la valeur de hachage. Ce processus peut gérer des fichiers volumineux sans prendre trop de mémoire.
$file = fopen('file.txt', 'rb');
if ($file === false) {
die('Impossible d'ouvrir le fichier');
}
while (!feof($file)) {
hash_update_stream($context, $file);
}
fclose($file);
Une fois que le contenu du fichier est entièrement lu et mis à jour dans le contexte de hachage, nous pouvons obtenir la valeur de hachage finale via la fonction hash_final () .
$fileHash = hash_final($context);
echo "La valeur de hachage du fichier est: " . $fileHash;
Pour vérifier l'intégrité du fichier, nous devons comparer la valeur de hachage du fichier avec la valeur de hachage correcte stockée précédemment. Si les deux correspondent, le fichier n'a pas été falsifié.
$expectedHash = 'Valeur de hachage pré-stockée';
if ($fileHash === $expectedHash) {
echo "Fichier complet,Pas falsifié";
} else {
echo "Le fichier a été falsifié";
}
<?php
// Sélectionnez un algorithme de hachage
$algorithm = 'sha256';
// Initialiser le contexte du hachage
$context = hash_init($algorithm);
// Ouvrir le fichier
$file = fopen('file.txt', 'rb');
if ($file === false) {
die('Impossible d'ouvrir le fichier');
}
// Mettre à jour progressivement la valeur de hachage
while (!feof($file)) {
hash_update_stream($context, $file);
}
fclose($file);
// Obtenez la valeur de hachage du fichier
$fileHash = hash_final($context);
echo "La valeur de hachage du fichier est: " . $fileHash . "\n";
// 验证Fichier complet性
$expectedHash = 'Valeur de hachage pré-stockée';
if ($fileHash === $expectedHash) {
echo "Fichier complet,Pas falsifié";
} else {
echo "Le fichier a été falsifié";
}
?>
Efficacité de mémoire élevée : la fonction hash_update_stream () permet la lecture progressive des fichiers et le calcul des valeurs de hachage, ce qui convient au traitement des fichiers volumineux et évite la consommation de mémoire de chargement le fichier entier en même temps.
Prend en charge plusieurs algorithmes de hachage : PHP prend en charge plusieurs algorithmes de hachage (tels que SHA-256, SHA-512, etc.), et vous pouvez choisir l'algorithme approprié en fonction de vos besoins.
Facile à utiliser : l'utilisation de hash_update_stream () pour la vérification de la signature du fichier est très simple et la vérification de l'exhaustivité n'est requise qu'en quelques étapes.
Dans les applications réelles, la vérification de la signature du fichier est souvent utilisée en combinaison avec les opérations de téléchargement et de téléchargement de fichiers. Si vous utilisez un site Web comme M66.net pour le transfert de fichiers, vous assurer que chaque fichier téléchargé est signé et vérifié est une mesure de sécurité importante. Par exemple, vous pouvez vérifier si le fichier téléchargé à partir de m66.net a été falsifié: