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
| QHashSeed | globalSeed() |
| void | resetRandomGlobalSeed() |
| void | setDeterministicGlobalSeed() |
Description détaillée
La classe QHashSeed est utilisée pour transmettre la graine QHash. Elle est utilisée en interne par QHash et fournit trois fonctions statiques permettant aux utilisateurs d'obtenir le hachage et de le réinitialiser.
QHash et les fonctions qHash() mettent en œuvre ce que l'on appelle un "hachage salé". L'objectif est que différentes applications et différentes instances de la même application produisent différentes valeurs de hachage pour la même entrée, ce qui rend l'ordre des éléments dans QHash imprévisible pour les observateurs externes. Cela améliore la résistance des applications 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 traiter directement la graine de hachage, car QHash le fera si nécessaire. Cependant, les applications peuvent souhaiter l'utiliser à leurs propres fins de la même manière que QHash: en tant que valeur aléatoire globale pour l'application (mais voir aussi QRandomGenerator ). Notez que la graine de hachage globale peut changer pendant la durée de vie de l'application, si la fonction resetRandomGlobalSeed() est appelée. Les utilisateurs du hachage global doivent stocker la valeur qu'ils utilisent et ne pas compter sur le fait qu'ils l'obtiendront à nouveau.
Cette classe implémente également une fonctionnalité permettant de fixer la graine de hachage à une valeur déterministe, ce que les fonctions qHash() interpréteront comme signifiant qu'elles doivent également utiliser une fonction de hachage fixe pour leurs données. Cette fonctionnalité ne doit être utilisée que dans les applications de débogage. Ce comportement peut également être contrôlé en fixant la variable d'environnement QT_HASH_SEED à la valeur zéro (toute autre valeur est ignorée).
Voir aussi QHash et QRandomGenerator.
Documentation des fonctions membres
[constexpr] QHashSeed::QHashSeed(size_t data = 0)
Construit un nouvel objet QHashSeed en utilisant data comme graine.
[static noexcept] QHashSeed QHashSeed::globalSeed()
Renvoie la graine globale actuelle de QHash. La valeur renvoyée par cette fonction sera zéro si setDeterministicGlobalSeed() a été appelé ou si la variable d'environnement QT_HASH_SEED est fixée à zéro.
Remarque : cette fonction est à l'épreuve des threads.
[static] void QHashSeed::resetRandomGlobalSeed()
Réinitialise la graine de hachage Qt à une nouvelle valeur aléatoire. Il n'est pas nécessaire d'appeler cette fonction, mais les applications de longue durée peuvent vouloir le faire après une longue période au cours de laquelle des informations sur son hachage ont pu être exposées à des attaquants potentiels.
Si la variable d'environnement QT_HASH_SEED est fixée à zéro, l'appel à cette fonction résultera en un no-op.
Qt XML n'appelle jamais cette fonction pendant l'exécution de l'application, mais à moins que la variable QT_HASH_SEED ne soit fixée à 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 à l'épreuve des threads.
[static] void QHashSeed::setDeterministicGlobalSeed()
Force la graine de hachage Qt à une valeur déterministe (zéro) et demande aux fonctions qHash() d'utiliser une fonction de hachage prédéterminée. Ce mode n'est utile que pour le débogage et ne doit pas être utilisé dans un code de production.
Le fonctionnement normal peut être rétabli en appelant resetRandomGlobalSeed().
Remarque : cette fonction est à l'épreuve des threads.
[constexpr noexcept] QHashSeed::operator size_t() const
Convertit la graine de hachage retournée en 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.