qHash(const QString&)
은 uint
이며 32 비트입니다. 32 비트 시스템에서 문자열에 대한 64 비트 해시를 가져 오는 표준 Qt 방식이 있습니까? 아니면 직접 해시 함수를 구현해야합니까?QString을위한 내장 된 64 비트 해시 함수?
4
A
답변
4
이 방법 중 하나입니다. 플랫폼이 무엇이든 관계없이 지정된 문자열이 동일한 해시를 제공한다는 점에서 교차 플랫폼입니다. 엔디안을 마사지하는 데 필요한만큼 QDataStream에 대한 의존성을 제거하고 바이트 플립 핑 기능을 사용하여 확실히 더욱 최적화 될 수 있습니다.
qint64 hash(const QString & str)
{
QByteArray hash = QCryptographicHash::hash(
QByteArray::fromRawData((const char*)str.utf16(), str.length()*2),
QCryptographicHash::Md5
);
Q_ASSERT(hash.size() == 16);
QDataStream stream(&hash);
qint64 a, b;
stream >> a >> b;
return a^b;
}
+0
QDataStream을 피할 것입니다. 그렇지 않으면 훌륭한 대답입니다. 감사합니다. 나는'QCryptographicHash'에 대해 몰랐다. –
2
QString에는 64 비트 해시를위한 표준 방법이 없습니다. 하지만 직접 해시를 구현하면 다음을 공부하는 것이 좋습니다. https://softwareengineering.stackexchange.com/questions/49550/which-hashing-algorithm-is-best-for-uniqueness-and-speed 그러면 코드 예제로 문자열 해시에 대한 많은 정보를 얻을 수 있습니다.
관련 문제
- 1. PHP 64 비트 정수 해시
- 2. 64 비트 정수에서 후행 0 비트를 카운트하는 내장 함수?
- 3. 64 비트보다 큰 인덱스의 해시 함수?
- 4. 64 비트 일관된 해시 알고리즘이란 무엇입니까?
- 5. C++ OpenSSL : md5 기반 64 비트 해시
- 6. "x 비트 해시 함수"란 의미
- 7. 128 비트 정수 해시 함수
- 8. 96 비트 출력 해시 함수
- 9. 64 비트 유형을 사용합니까?
- 10. 비밀번호에 사용할 내장 자바 해시 함수
- 11. 64 비트 리눅스에서 함수 포인터 크기
- 12. ARMv8 NEON GCC 내장 함수
- 13. 내장 함수/내장 함수 테스트
- 14. NVCC는 gcc가 내장 내장 함수
- 15. 유사성 해시 함수 (simhash)
- 16. 64 비트 Windows에서 PHP win32_query_service_status() 함수 사용
- 17. 32 비트 및 64 비트 프로세스에서 작동해야하는 64 비트 라이브러리
- 18. 이클립스 주노 64 비트 충돌 64 비트
- 19. 64 비트 Java 및 64 비트 액세스
- 20. SQL 서버에 내장 된 함수
- 21. 내장 된 is.na 함수 재정의
- 22. 파이썬 내장 함수 내장
- 23. C# 개체의 32 비트 해시 함수
- 24. 하나의 128 비트 해시 대 두 개의 다른 64 비트 해시 (비 암호화)?
- 25. Fortran storage_size 내장 함수
- 26. Visual C++ 128 비트 본질 내장
- 27. 내장 함수 쌍
- 28. C에서 64 비트 쓰기 연산입니까
- 29. 내장 된 웹캠에서 이미지 캡처
- 30. 64 비트 Java 응용 프로그램 : 64 비트 OS, 64 비트 JRE 및 64 비트 응용 프로그램이 필요합니까?
왜 64 비트 해시를 원하십니까? 더 나은 충돌을 방지하거나 어딘가에 해시를 위해 예약 된 64 비트를 채우기 위해서? 현실적인 충돌 가능성을 피하려면 최소 64 비트 (보안 측면, SHA256 또는 무언가를 신경 쓰지 않는다면)보다 더 많은 비트를 원한다고 말하고 싶습니다. 그렇지 않으면 32 비트'qHash'에 패딩 비트를 추가하십시오. – hyde