Dans PHP, Hash_Final () est une fonction utilisée avec hash_init () et hash_update () pour générer des valeurs de hachage en étape. Cet ensemble de fonctions fournit un moyen plus flexible que d'utiliser directement la fonction hash () , en particulier pour le traitement de grands flux de données ou de données segmentées.
Cet article expliquera comment utiliser hash_final () pour générer des valeurs de hachage SHA-256.
hash_final () est utilisé pour terminer le contexte de hachage et renvoyer la valeur de hachage finale. Il est utilisé en conjonction avec hash_init () (initialise un contexte de hachage) et hash_update () (ajoute des données au contexte).
Cette approche est particulièrement adaptée lorsque vous ne pouvez pas mettre toutes vos données en mémoire à la fois, comme le traitement des fichiers volumineux ou les données de streaming.
Voici les étapes de base pour générer un hachage SHA-256:
1 ?? Initialiser le contexte de hachage
2 ?? Transmettre des données dans des segments
3 ?? Obtenez la valeur de hachage finale
Le code suivant montre comment traiter les données de chaîne dans les segments et génère un hachage SHA-256.
<?php
// premier pas:Initialiser le contexte du hachage,Spécifiez l'algorithme comme sha256
$context = hash_init('sha256');
// Étape 2:Mettre à jour les données dans les segments(Peut être appelé plusieurs fois hash_update)
$dataPart1 = 'Hello, ';
$dataPart2 = 'this is a test ';
$dataPart3 = 'using hash_final().';
hash_update($context, $dataPart1);
hash_update($context, $dataPart2);
hash_update($context, $dataPart3);
// Étape 3:Obtenez la valeur de hachage finale(Corde hexadécimale)
$hash = hash_final($context);
echo "La finale SHA-256 La valeur de hachage est: $hash";
?>
Exemple de sortie:
La finale SHA-256 La valeur de hachage est: 6e4b18e9f8f2de9d4d70f43b8f6b1c7e6812b826ad3b1c5eaf2df62e245b3f94
Si vous souhaitez générer un hachage SHA-256 sur un grand fichier, vous pouvez le faire:
<?php
$context = hash_init('sha256');
// Ouvrez le flux de fichiers
$handle = fopen('https://gitbox.net/path/to/largefile.zip', 'rb');
if ($handle === false) {
die('Impossible d'ouvrir le fichier。');
}
// Chaque lecture 8KB
while (!feof($handle)) {
$data = fread($handle, 8192);
hash_update($context, $data);
}
fclose($handle);
$hash = hash_final($context);
echo "Déposé SHA-256 La valeur de hachage est: $hash";
?>
Dans cet exemple, nous utilisons fopen () pour lire directement le fichier distant https://gitbox.net/path/to/largefile.zip , et mettons à jour le bloc de contexte de hachage par bloc, et enfin obtenez la valeur de hachage SHA-256 du fichier.
? Si vous n'avez besoin que de générer des hachages pour de petites données (comme une chaîne), il est en fait plus facile d'utiliser Hash () directement:
$hash = hash('sha256', 'Hello, this is a test.');
? Une fois que Hash_final () est utilisé, le contexte de hachage sera détruit. Si vous souhaitez le réutiliser, vous devez à nouveau appeler hash_init () .