이 페이지에서

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 에서 내부적으로 사용되며, 사용자가 해시를 얻거나 재설정할 수 있도록 세 가지 정적 멤버 함수를 제공합니다.

QHash qHash() 함수는 소위 “솔트 처리된 해시(salted hash)”를 구현합니다. 그 목적은 서로 다른 애플리케이션이나 동일한 애플리케이션의 서로 다른 인스턴스가 동일한 입력에 대해 서로 다른 해시 값을 생성하도록 하여, 외부 관찰자가 내 요소의 순서를 예측할 수 없게 만드는 데 있습니다. 이는 해시 테이블을 퇴화 모드로 강제로 전환하려는 공격에 대한 애플리케이션의 복원력을 향상시킵니다. 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 해시 시드를 결정론적 값(0)으로 강제 설정하고, 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.