사용 가능한 해시
MD2 해시, MD4 해시, MD5 해시, SHA1 해시, SHA224 해시, SHA256 해시, SHA384 해시, SHA512/224 해시, SHA512/256 해시, SHA512 해시, SHA3-224 해시, SHA3-256 해시, SHA3-384 해시, SHA3-512 해시, RIPEMD128 해시, RIPEMD160 해시, RIPEMD256 해시, RIPEMD320 해시, WHIRLPOOL 해시, TIGER128,3 해시, TIGER160,3 해시, TIGER192,3 해시, TIGER128,4 해시, TIGER160,4 해시, TIGER192,4 해시, SNEFRU 해시, SNEFRU256 해시, GOST 해시, GOST-CRYPTO 해시, ADLER32 해시, CRC32 해시, CRC32B 해시, CRC32C 해시, FNV132 해시, FNV1A32 해시, FNV164 해시, FNV1A64 해시, JOAAT 해시, MURMUR3A 해시, MURMUR3C 해시, MURMUR3F 해시, XXH32 해시, XXH64 해시, XXH3 해시, XXH128 해시, HAVAL128,3 해시, HAVAL160,3 해시, HAVAL192,3 해시, HAVAL224,3 해시, HAVAL256,3 해시, HAVAL128,4 해시, HAVAL160,4 해시, HAVAL192,4 해시, HAVAL224,4 해시, HAVAL256,4 해시, HAVAL128,5 해시, HAVAL160,5 해시, HAVAL192,5 해시, HAVAL224,5 해시, HAVAL256,5 해시,
XXH32란 무엇인가?
XXH32는 32비트 레지스터에서 작동하는 고성능 비암호화 해시 함수입니다. Yann Collet이 개발한 xxHash 계열의 일부인 이 함수는 RAM의 한계 내에서 가능한 최대 속도를 달성하도록 설계되었습니다. 수학적 복잡성을 우선시하는 기존 알고리즘과 달리, XXH32는 최신 프로세서 아키텍처를 최대한 활용하도록 설계되어 32비트 출력 요구 사항에 대해 사용 가능한 가장 빠른 해시 함수 중 하나입니다.
XXH32 해시는 어떻게 작동하나요?
XXH32는 CPU 스톨과 데이터 의존성을 최소화하는 고도로 최적화된 루프 구조를 활용합니다:
- 초기화: 알고리즘은 32비트 시드 값으로 시작하여 4개의 내부 32비트 누산기를 초기화합니다.
- 메인 루프: 입력 데이터는 16바이트 단위로 처리됩니다. 각 블록은 "소수 상수"(
0x9E3779B1)와의 곱셈을 통해 네 개의 누산기에 혼합된 후, 비트 단위 회전을 거치며, 이는 높은 분산도(아발란치 효과)를 달성하는 데 기여합니다. - 스트림 처리: 4개의 독립적인 누적기를 유지하기 때문에, 이 알고리즘은 혼합 과정을 효과적으로 병렬화하여 CPU가 여러 명령어를 동시에 실행할 수 있게 합니다.
- 최종 처리: 전체 입력을 처리한 후, 4개의 누산기를 병합하고 일련의 "아발란치" 연산을 수행하여 모든 입력 비트가 최종 32비트 결과에 기여하도록 보장합니다.
XXH32의 주요 장점
- 극대화된 처리량: XXH32는 "RAM 속도"로 실행되도록 특별히 튜닝되어 있어, 병목 현상은 일반적으로 알고리즘의 계산 오버헤드가 아닌 시스템의 메모리 대역폭에서 발생합니다.
- 뛰어난 분포: 빠른 속도에도 불구하고 매우 높은 품질의 분포를 유지합니다. SMHasher 테스트 모음(비암호화 해시 평가를 위한 업계 표준)의 모든 테스트를 통과하며, 32비트 알고리즘 치고는 뛰어난 충돌 저항성을 보여줍니다.
- 낮은 지연 시간: 간결하고 효율적인 루프 구조 덕분에, 다른 복잡한 알고리즘들이 시작 지연 시간으로 인해 성능 저하를 겪을 수 있는 중소 규모 데이터셋에서 탁월한 성능을 발휘합니다.
- 이식성: 종속성이 없는 순수 C 언어로 구현되어 있어, 다양한 하드웨어 아키텍처와 운영 체제 간에 높은 이식성을 자랑합니다.