Sur cette page

QHashSeed Struct

En-tête : #include <QHashSeed>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core
Depuis : Qt 6.2

Fonctions publiques

QHashSeed(size_t data = 0)
operator size_t() const

Membres publics statiques

Description détaillée

La classe QHashSeed sert à transmettre la graine de l'QHash. Elle est utilisée en interne par QHash et fournit trois fonctions membres statiques permettant aux utilisateurs d'obtenir le hachage et de le réinitialiser.

QHash Les fonctions qHash() implémentent ce que l'on appelle un « hachage salé ». L'objectif est que différentes applications et différentes instances d'une même application produisent des valeurs de hachage différentes pour une même entrée, rendant ainsi l'ordre des éléments dans QHash imprévisible pour les observateurs externes. Cela améliore la résilience des applications face aux attaques qui tentent de forcer les tables de hachage à passer en mode dégénéré.

La plupart des applications n’auront pas besoin de gérer directement la graine de hachage, car la fonction ` QHash ` s’en chargera si nécessaire. Cependant, les applications peuvent souhaiter l’utiliser à leurs propres fins, de la même manière que le fait ` QHash ` : en tant que valeur aléatoire globale à l’échelle de l’application (mais voir également ` QRandomGenerator `). Notez que la graine de hachage globale peut changer au cours de la durée de vie de l’application, si la fonction resetRandomGlobalSeed() est appelée. Les utilisateurs de la graine de hachage globale doivent enregistrer la valeur qu’ils utilisent et ne pas compter sur le fait de la récupérer à nouveau.

Cette classe implémente également une fonctionnalité permettant de définir la graine de hachage sur une valeur déterministe, ce que les fonctions ` qHash()` interpréteront comme une instruction leur demandant d'utiliser également une fonction de hachage fixe sur leurs données. Cette fonctionnalité est uniquement destinée à être utilisée dans le cadre du débogage d’applications. Ce comportement peut également être contrôlé en définissant la variable d’environnement QT_HASH_SEED sur la valeur zéro (toute autre valeur est ignorée).

Voir également QHash et QRandomGenerator.

Documentation sur les fonctions membres

[constexpr] QHashSeed::QHashSeed(size_t data = 0)

Crée un nouvel objet `QHashSeed` en utilisant ` data ` comme graine.

[static noexcept] QHashSeed QHashSeed::globalSeed()

Renvoie la graine actuelle de l'QHash e global. La valeur renvoyée par cette fonction sera égale à zéro si la fonction setDeterministicGlobalSeed() a été appelée ou si la variable d'environnement QT_HASH_SEED est définie sur zéro.

Remarque : cette fonction est sûre pour les threads.

[static] void QHashSeed::resetRandomGlobalSeed()

Réinitialise la graine de hachage Qt à une nouvelle valeur aléatoire. L'appel de cette fonction n'est pas obligatoire, mais les applications fonctionnant pendant une longue durée peuvent souhaiter le faire après une période prolongée au cours de laquelle des informations relatives à leur hachage auraient pu être exposées à des attaquants potentiels.

Si la variable d'environnement QT_HASH_SEED est définie sur zéro, l'appel de cette fonction n'aura aucun effet.

Qt n'appelle jamais cette fonction pendant l'exécution de l'application, mais à moins que la variable QT_HASH_SEED ne soit définie sur 0, la graine de hachage renvoyée par globalSeed() sera une valeur aléatoire, comme si cette fonction avait été appelée.

Remarque : cette fonction est thread-safe.

[static] void QHashSeed::setDeterministicGlobalSeed()

Force la graine de hachage Qt à prendre une valeur déterministe (zéro) et demande aux fonctions qHash() d'utiliser une fonction de hachage prédéfinie. Ce mode n'est utile qu'à des fins de débogage et ne doit pas être utilisé dans le code de production.

Le fonctionnement normal peut être rétabli en appelant la fonction resetRandomGlobalSeed().

Remarque : cette fonction est thread-safe.

[constexpr noexcept] QHashSeed::operator size_t() const

Convertit la graine de hachage renvoyée en un objet de type ` size_t`.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.