このページでは

QHashSeed Struct

ヘッダー: #include <QHashSeed>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
以下のように: Qt 6.2

パブリック関数

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

静的パブリックメンバー

詳細な説明

QHashSeed クラスは、QHash のシードを伝達するために使用されます。これはQHash によって内部的に使用され、ユーザーがハッシュを取得したりリセットしたりできるようにするための 3 つの静的メンバ関数を提供します。

QHash および `qHash()` 関数は、いわゆる「ソルト付きハッシュ」を実装しています。その意図は、異なるアプリケーションや、同じアプリケーションの異なるインスタンスが、同じ入力に対して異なるハッシュ値を生成するようにすることで、外部の観察者から見て `QHash ` 内の要素の順序が予測不可能になるようにすることです。これにより、ハッシュテーブルを退化モードに追い込もうとする攻撃に対するアプリケーションの耐性が向上します。

QHash が必要に応じてハッシュシードを処理するため、ほとんどのアプリケーションはハッシュシードを直接扱う必要はありません。ただし、アプリケーションによっては、QHash と同様に、これを独自の目的(アプリケーション全体で共通のランダム値として)に使用したい場合もあるでしょう(ただし、QRandomGenerator も参照してください)。resetRandomGlobalSeed() 関数が呼び出された場合、アプリケーションの実行期間中にグローバルなハッシュシードが変更される可能性があることに注意してください。グローバルなハッシュを使用するユーザーは、使用中の値を保存し、再度取得できることを当てにしないようにする必要があります。

また、このクラスはハッシュシードを決定論的な値に設定する機能も実装しており、qHash() 関数はこれを、データに対しても固定のハッシュ関数を使用すべきであるという指示として解釈します。 この機能は、アプリケーションのデバッグ時のみ使用することを意図しています。この動作は、環境変数 `QT_HASH_SEED ` を 0 に設定することで制御することもできます(それ以外の値は無視されます)。

QHash およびQRandomGeneratorも参照してください 。

メンバ関数のドキュメント

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

data をシードとして、新しいQHashSeedオブジェクトを作成します。

[static noexcept] QHashSeed QHashSeed::globalSeed()

現在のグローバルなQHash のシード値を返します。setDeterministicGlobalSeed()が呼び出されている場合、またはQT_HASH_SEED 環境変数が0に設定されている場合、この関数が返す値は0になります。

注: この関数はスレッドセーフです。

[static] void QHashSeed::resetRandomGlobalSeed()

Qtのハッシュシードを新しいランダムな値に再設定します。この関数を呼び出す必要はありませんが、長時間実行されるアプリケーションでは、ハッシュに関する情報が潜在的な攻撃者にさらされていた可能性がある長い期間が経過した後、この処理を行うことが望ましい場合があります。

環境変数QT_HASH_SEED が0に設定されている場合、この関数を呼び出しても何もしません。

Qt XML はアプリケーションの実行中にこの関数を呼び出すことはありませんが、QT_HASH_SEED 変数が 0 に設定されていない限り、globalSeed() が返すハッシュシードは、あたかもこの関数が呼び出されたかのようにランダムな値になります。

注: この関数はスレッドセーフです。

[static] void QHashSeed::setDeterministicGlobalSeed()

Qtのハッシュシードを決定論的な値(ゼロ)に強制し、qHash() 関数に対してあらかじめ決められたハッシュ関数を使用するよう指定します。このモードはデバッグ時にのみ有用であり、本番環境のコードでは使用しないでください。

resetRandomGlobalSeed() を呼び出すことで、通常の動作に戻すことができます。

注: この関数はスレッドセーフです。

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

返されたハッシュシードを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.