Pourquoi les valeurs de hachage Python 3.3 diffèrent-elles entre les sessions ?

Barbara Streisand
Libérer: 2024-11-02 22:56:29
original
172 Les gens l'ont consulté

Why Do Python 3.3 Hash Values Differ Between Sessions?

Fonction de hachage dans Python 3.3 : pourquoi différents résultats sont renvoyés entre les sessions

Dans Python 3.3, la fonction hash() interne se comporte de manière inattendue, renvoyer différentes valeurs de hachage pour la même chaîne dans différentes sessions. Ce phénomène découle de l'utilisation par Python d'une graine de hachage aléatoire comme mesure de sécurité.

La graine de hachage aléatoire est utilisée pour empêcher les attaquants d'exploiter des clés prévisibles qui pourraient provoquer des attaques par piqûre de goudron. En ajoutant un décalage aléatoire au hachage, les attaquants ne peuvent pas anticiper quelles clés entreront en collision.

Pour contrôler le comportement de la fonction de hachage, la variable d'environnement PYTHONHASHSEED peut être définie. Une graine positive fixe peut être spécifiée pour éviter le caractère aléatoire, tandis que sa définition sur 0 désactive entièrement le décalage de la graine.

Avant Python 3.3, la graine de hachage aléatoire était désactivée ; cependant, il est devenu activé par défaut. Ce changement affecte non seulement les ensembles mais également les dictionnaires dans les versions Python 3.5 et antérieures.

De plus, object.__hash__() a un comportement spécial :

  • Pour str, bytes et datetime objets, les valeurs de hachage sont « salées » avec une valeur imprévisible, ce qui les rend cohérentes au sein d'un processus mais imprévisibles à travers sessions.
  • Cette mesure empêche les attaques par déni de service basées sur l'exploitation du pire des cas d'insertion de dictionnaire.

Il est important de noter que les valeurs de hachage ont un impact sur l'ordre d'itération des mappages tels que comme dictés et ensembles. Cependant, un tel ordre n'est pas garanti par Python et peut varier selon les différentes versions et versions.

Pour un hachage cohérent, envisagez d'utiliser le module hashlib, qui fournit des fonctions de hachage cryptographique. De plus, pybloom utilise cette approche pour plus de stabilité.

Bien que le décalage aléatoire des graines de hachage rende difficile pour les attaquants de déterminer le décalage, il empêche également le stockage du décalage lui-même. Cependant, cela garantit que les attaquants ne peuvent pas utiliser d'attaques temporelles pour déterminer la graine.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal