Calculateur de code de hachage Fowler-Noll-Vo FNV1a-32
Publié : 18 février 2025 à 00:09:01 UTC
Calculateur de code de hachage qui utilise la fonction de hachage Fowler-Noll-Vo 1a 32 bits (FNV1a-32) pour calculer un code de hachage basé sur une saisie de texte ou un téléchargement de fichier.Fowler-Noll-Vo FNV1a-32 Hash Code Calculator
La fonction de hachage 32 bits FNV-1a fait partie de la famille de fonctions de hachage Fowler–Noll–Vo (FNV), conçue pour un hachage rapide tout en maintenant une bonne distribution des valeurs de hachage. Elle est couramment utilisée dans des applications telles que les tables de hachage, les sommes de contrôle et les recherches de données. Elle produit un code de hachage 32 bits (4 octets), souvent représenté par un nombre hexadécimal à 8 chiffres.
La variante FNV-1a est une version améliorée de la fonction FNV-1 d'origine avec une meilleure sécurité.
Divulgation complète : je n'ai pas écrit l'implémentation spécifique de la fonction de hachage utilisée sur cette page. Il s'agit d'une fonction standard incluse dans le langage de programmation PHP. J'ai seulement créé l'interface web pour la rendre publiquement disponible ici pour des raisons de commodité.
À propos de l'algorithme de hachage 32 bits Fowler-Noll-Vo FNV-1a
Je ne suis pas mathématicien, mais je vais essayer d'expliquer cette fonction de hachage en utilisant une analogie que mes collègues non mathématiciens peuvent comprendre. Si vous préférez une explication scientifiquement correcte et mathématiquement effrayante, je suis sûr que vous pouvez la trouver ailleurs ;-)
Tout d'abord, considérons l'algorithme FNV-1 comme une recette pour préparer un smoothie spécial. Chaque ingrédient que vous ajoutez (comme des fruits, du lait ou du miel) représente un élément de données, comme des lettres, des chiffres ou même un fichier entier.
L'objectif est de mélanger ces ingrédients d'une manière très spécifique afin que même le plus petit changement dans la recette (comme l'ajout d'une myrtille supplémentaire) donne au smoothie un goût complètement différent. C'est ainsi que fonctionnent les fonctions de hachage : elles créent une « saveur » unique (ou valeur de hachage) pour chaque ensemble unique d'ingrédients (ou données d'entrée).
L'algorithme FNV-1 réalise cela en suivant un processus en plusieurs étapes :
Étape 1 : Commencez avec une base (base décalée)
Considérez cela comme si vous versiez une base de smoothie spéciale dans votre mixeur. Cette base est toujours la même, quels que soient les ingrédients que vous ajoutez. Dans FNV-1, cela s'appelle la « base décalée » - juste un nombre de départ fantaisiste.
Étape 2 : ajouter les ingrédients un par un (traitement des données)
Vous commencez maintenant à ajouter vos ingrédients, un par un : disons une fraise, puis une banane, puis du miel. Chacun d'entre eux représente un octet de données.
Étape 3 : Mélangez avec un multiplicateur secret (le FNV Prime)
Après avoir ajouté chaque ingrédient, appuyez sur le bouton de mélange, mais voici le truc en plus : le mixeur multiplie le tout par un « nombre magique » secret appelé le nombre prime FNV. Cela permet de bien mélanger les ingrédients.
Étape 4 : ajoutez une touche de magie (opération XOR)
Avant d'ajouter l'ingrédient suivant, saupoudrez un peu de poudre magique (c'est l'opération XOR). C'est comme inverser la saveur de manière inattendue, en s'assurant que même les petits changements font une grande différence.
Étape 5 : Répétez jusqu'à ce que vous ayez terminé
Vous continuez à mélanger et à saupoudrer de magie après chaque nouvel ingrédient jusqu'à ce que vous ayez tout traité.
Étape 6 : Smoothie final (valeur de hachage)
Une fois terminé, versez le smoothie. Le goût final (la valeur de hachage) est unique à cette combinaison exacte d'ingrédients. Si vous aviez ajouté ne serait-ce qu'une myrtille supplémentaire, le goût aurait été complètement différent.
La version présentée ici est la version améliorée FNV-1a 32 bits. Si vous avez besoin de la version originale, j'ai aussi une calculatrice pour cela : Calculateur de code de hachage Fowler-Noll-Vo FNV1-32