QHashSeed Struct
| Cabecera: | #include <QHashSeed> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Desde: | Qt 6.2 |
Funciones Públicas
| QHashSeed(size_t data = 0) | |
| operator size_t() const |
Miembros públicos estáticos
| QHashSeed | globalSeed() |
| void | resetRandomGlobalSeed() |
| void | setDeterministicGlobalSeed() |
Descripción Detallada
La clase QHashSeed se utiliza para transmitir la semilla QHash. Es utilizada internamente por QHash y proporciona tres funciones miembro estáticas para permitir a los usuarios obtener el hash y restablecerlo.
QHash y las funciones qHash() implementan lo que se denomina "salted hash". La intención es que diferentes aplicaciones y diferentes instancias de la misma aplicación produzcan diferentes valores hash para la misma entrada, causando así que el orden de los elementos en QHash sea impredecible para observadores externos. Esto mejora la resistencia de las aplicaciones frente a los ataques que intentan forzar las tablas hash al modo degenerado.
La mayoría de las aplicaciones no necesitarán tratar directamente con la semilla hash, ya que QHash lo hará cuando sea necesario. Sin embargo, las aplicaciones pueden desear utilizarla para sus propios propósitos de la misma manera que lo hace QHash: como un valor aleatorio global de la aplicación (pero véase también QRandomGenerator ). Ten en cuenta que la semilla hash global puede cambiar durante el tiempo de vida de la aplicación, si se llama a la función resetRandomGlobalSeed(). Los usuarios del hash global necesitan almacenar el valor que están usando y no depender de obtenerlo de nuevo.
Esta clase también implementa la funcionalidad para establecer la semilla hash a un valor determinista, que las funciones qHash() tomarán como que deben usar una función hash fija en sus datos también. Esta funcionalidad sólo está pensada para ser utilizada en aplicaciones de depuración. Este comportamiento también puede ser controlado estableciendo la variable de entorno QT_HASH_SEED al valor cero (cualquier otro valor es ignorado).
Véase también QHash y QRandomGenerator.
Documentación de las funciones miembro
[constexpr] QHashSeed::QHashSeed(size_t data = 0)
Construye un nuevo objeto QHashSeed usando data como semilla.
[static noexcept] QHashSeed QHashSeed::globalSeed()
Devuelve la semilla global actual QHash. El valor devuelto por esta función será cero si se ha llamado a setDeterministicGlobalSeed() o si la variable de entorno QT_HASH_SEED está a cero.
Nota: Esta función es segura para hilos.
[static] void QHashSeed::resetRandomGlobalSeed()
Vuelve a cargar la semilla hash de Qt con un nuevo valor aleatorio. Llamar a esta función no es necesario, pero las aplicaciones de larga ejecución pueden querer hacerlo después de un largo período de tiempo en el que la información sobre su hash puede haber estado expuesta a posibles atacantes.
Si la variable de entorno QT_HASH_SEED está a cero, llamar a esta función resultará en un no-op.
Qt nunca llama a esta función durante la ejecución de la aplicación, pero a menos que la variable QT_HASH_SEED esté a 0, la semilla hash devuelta por globalSeed() será un valor aleatorio como si se hubiera llamado a esta función.
Nota: Esta función es thread-safe.
[static] void QHashSeed::setDeterministicGlobalSeed()
Fuerza la semilla hash de Qt a un valor determinista (cero) y pide a las funciones qHash() que utilicen una función hash predeterminada. Este modo sólo es útil para depuración y no debe utilizarse en código de producción.
El funcionamiento normal puede restaurarse llamando a resetRandomGlobalSeed().
Nota: Esta función es thread-safe.
[constexpr noexcept] QHashSeed::operator size_t() const
Convierte la semilla hash devuelta en un 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.