QHashSeed Struct

Kopfzeile: #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)
size_t operator size_t() const

Statische öffentliche Mitglieder

Detaillierte Beschreibung

Die Klasse QHashSeed wird verwendet, um den QHash seed zu übermitteln. Sie wird intern von QHash verwendet und bietet drei statische Mitgliedsfunktionen, mit denen Benutzer den Hash erhalten und zurücksetzen können.

QHash Die Klasse QHashSeed und die Funktionen qHash() implementieren einen so genannten "gesalzenen Hash". Die Absicht ist, dass verschiedene Anwendungen und verschiedene Instanzen der gleichen Anwendung unterschiedliche Hash-Werte für die gleiche Eingabe 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 tut. Es kann jedoch sein, dass Anwendungen diesen Wert für ihre eigenen Zwecke verwenden wollen, wie es QHash tut: als anwendungsübergreifenden Zufallswert (siehe auch QRandomGenerator ). Beachten Sie, dass sich der globale Hashwert während der Lebensdauer der Anwendung ändern kann, wenn die Funktion resetRandomGlobalSeed() aufgerufen wird. Benutzer des globalen Hashes müssen den Wert, den sie verwenden, speichern und sich nicht darauf verlassen, dass sie ihn wieder bekommen.

Diese Klasse implementiert auch eine Funktion, mit der der Hash-Seed auf einen deterministischen Wert gesetzt werden kann, was für die qHash()-Funktionen bedeutet, dass auch sie eine feste Hash-Funktion für ihre Daten verwenden sollten. Diese Funktionalität ist nur für die Fehlersuche in Anwendungen gedacht. Dieses Verhalten kann auch gesteuert werden, indem die Umgebungsvariable QT_HASH_SEED auf den Wert Null gesetzt wird (jeder andere Wert wird ignoriert).

Siehe auch QHash und QRandomGenerator.

Dokumentation der Mitgliedsfunktionen

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

Konstruiert ein neues QHashSeed-Objekt mit data als Seed.

[static noexcept] QHashSeed QHashSeed::globalSeed()

Gibt den aktuellen globalen QHash Seed 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 thread-sicher.

[static] void QHashSeed::resetRandomGlobalSeed()

Setzt den Qt-Hashing-Seed auf einen neuen, zufälligen Wert. Es ist nicht notwendig, diese Funktion aufzurufen, aber bei lang laufenden Anwendungen kann es sinnvoll sein, dies nach einer langen Zeitspanne zu tun, in der Informationen über den Hash für potentielle Angreifer zugänglich waren.

Wenn die Umgebungsvariable QT_HASH_SEED auf Null gesetzt ist, führt der Aufruf dieser Funktion zu einem No-op.

Qt ruft diese Funktion während der Ausführung der Anwendung nie auf, aber wenn die Variable QT_HASH_SEED nicht auf 0 gesetzt ist, wird der von globalSeed() zurückgegebene Hash-Seed ein Zufallswert sein, als ob diese Funktion aufgerufen worden wäre.

Hinweis: Diese Funktion ist thread-sicher.

[static] void QHashSeed::setDeterministicGlobalSeed()

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

Der reguläre Betrieb kann durch den Aufruf von resetRandomGlobalSeed() wiederhergestellt werden.

Hinweis: Diese Funktion ist thread-sicher.

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

Wandelt den zurückgegebenen Hash-Seed in ein size_t um.

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