Auf dieser Seite

QHashSeed Struct

Überschrift: #include <QHashSeed>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Seit: Qt 6.2

Öffentliche Funktionen

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

Statische öffentliche Mitglieder

Ausführliche Beschreibung

Die Klasse `QHashSeed` dient zur Übermittlung des Startwerts für ` QHash `. Dieser wird intern von ` QHash ` verwendet und stellt drei statische Mitgliedsfunktionen bereit, mit denen Benutzer den Hash abrufen und zurücksetzen können.

QHash und die Funktionen „ qHash()“ implementieren das sogenannte „Salted Hash“. Damit soll erreicht werden, dass verschiedene Anwendungen und verschiedene Instanzen derselben Anwendung für dieselbe Eingabe unterschiedliche Hash-Werte erzeugen, wodurch die Reihenfolge der Elemente in „ QHash “ für externe Beobachter unvorhersehbar wird. Dies verbessert die Widerstandsfähigkeit der Anwendungen gegen Angriffe, die versuchen, Hash-Tabellen in den degenerierten Modus zu zwingen.

Die meisten Anwendungen müssen sich nicht direkt mit dem Hash-Seed befassen, da QHash dies bei Bedarf übernimmt. Anwendungen können diesen jedoch für eigene Zwecke auf dieselbe Weise nutzen wie QHash: als anwendungsglobalen Zufallswert (siehe jedoch auch QRandomGenerator ). Beachten Sie, dass sich der globale Hash-Seed während der Laufzeit der Anwendung ändern kann, wenn die Funktion ` resetRandomGlobalSeed()` aufgerufen wird. Nutzer des globalen Hash-Seeds müssen den von ihnen verwendeten Wert speichern und dürfen sich nicht darauf verlassen, ihn erneut zu erhalten.

Diese Klasse implementiert außerdem eine Funktionalität, um den Hash-Seed auf einen deterministischen Wert zu setzen, was von den Funktionen ` qHash()` so interpretiert wird, dass sie ebenfalls eine feste Hash-Funktion für ihre Daten verwenden sollen. Diese Funktionalität ist ausschließlich für die Verwendung in Debugging-Anwendungen vorgesehen. Dieses Verhalten lässt sich auch steuern, indem die Umgebungsvariable ` QT_HASH_SEED ` auf den Wert Null gesetzt wird (jeder andere Wert wird ignoriert).

Siehe auch QHash und QRandomGenerator.

Dokumentation zu Mitgliedsfunktionen

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

Erstellt ein neues QHashSeed-Objekt unter Verwendung von „ data “ als Startwert.

[static noexcept] QHashSeed QHashSeed::globalSeed()

Gibt den aktuellen Startwert für den globalen Zufallsgenerator „ QHash “ zurück. Der von dieser Funktion zurückgegebene Wert ist Null, wenn „ setDeterministicGlobalSeed()“ aufgerufen wurde oder wenn die Umgebungsvariable „ QT_HASH_SEED “ auf Null gesetzt ist.

Hinweis: Diese Funktion ist threadsicher.

[static] void QHashSeed::resetRandomGlobalSeed()

Setzt den Qt-Hash-Startwert auf einen neuen Zufallswert zurück. Der Aufruf dieser Funktion ist nicht erforderlich, kann jedoch bei lang laufenden Anwendungen sinnvoll sein, nachdem Informationen über deren Hash möglicherweise über einen längeren Zeitraum hinweg potenziellen Angreifern zugänglich waren.

Ist die Umgebungsvariable ` QT_HASH_SEED ` auf Null gesetzt, hat der Aufruf dieser Funktion keine Auswirkung.

Qt ruft diese Funktion während der Ausführung der Anwendung niemals auf, aber sofern die Variable „ QT_HASH_SEED “ nicht auf 0 gesetzt ist, ist der von ` globalSeed()` zurückgegebene Hash-Startwert ein Zufallswert, als ob diese Funktion aufgerufen worden wäre.

Hinweis: Diese Funktion ist threadsicher.

[static] void QHashSeed::setDeterministicGlobalSeed()

Setzt den Qt-Hash-Seed auf einen deterministischen Wert (Null) und weist die Funktionen ` qHash()` an, eine vorab festgelegte Hash-Funktion zu verwenden. Dieser Modus ist nur für die Fehlersuche nützlich und sollte nicht in Produktionscode verwendet werden.

Der normale Betrieb kann durch Aufruf von ` resetRandomGlobalSeed()` wiederhergestellt werden.

Hinweis: Diese Funktion ist threadsicher.

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

Wandelt den zurückgegebenen Hash-Seed in einen „ size_t “ um.

© 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.