Position actuelle: Accueil> Derniers articles> Utilisez hash_update_stream () pour implémenter la vérification de la signature du fichier

Utilisez hash_update_stream () pour implémenter la vérification de la signature du fichier

M66 2025-05-27

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.

Qu'est-ce que la vérification de la signature du fichier?

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é.

Introduction à la fonction hash_update_stream ()

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.

L'utilisation de base de la fonction hash_update_stream ()

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.

Étape 1: Initialiser le contexte du hachage

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);

Étape 2: ouvrez le fichier et mettez progressivement à mettre à jour la valeur de hachage

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);

Étape 3: Obtenez la valeur de hachage du fichier

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;

Étape 4: Vérifiez l'intégrité du fichier

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é";
}

Exemple: code de vérification de la signature de fichier complet

 <?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&#39;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é";
}
?>

Avantages de l'utilisation de hash_update_stream ()

  1. 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.

  2. 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.

  3. 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.

Sécurité de l'URL

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é: