Fowler-Noll-Vo FNV1-32 해시 코드 계산기
게시됨: 2025년 2월 18일 오전 12시 15분 48초 UTC
Fowler-Noll-Vo 1 32비트(FNV1-32) 해시 함수를 사용하여 텍스트 입력이나 파일 업로드를 기반으로 해시 코드를 계산하는 해시 코드 계산기입니다.Fowler-Noll-Vo FNV1-32 Hash Code Calculator
FNV-1 32비트 해시 함수는 Fowler–Noll–Vo(FNV) 해시 함수 패밀리의 일부로, 해시 값의 양호한 분포를 유지하면서 빠른 해싱을 위해 설계되었습니다. 해시 테이블, 체크섬, 데이터 조회와 같은 애플리케이션에서 일반적으로 사용됩니다. 32비트(4바이트) 해시 코드를 생성하며, 종종 8자리 16진수로 표현됩니다.
전체 공개: 이 페이지에서 사용된 해시 함수의 구체적인 구현은 제가 직접 작성하지 않았습니다. PHP 프로그래밍 언어에 포함된 표준 함수입니다. 편의를 위해 웹 인터페이스만 공개하여 여기에서 사용할 수 있도록 만들었습니다.
Fowler-Noll-Vo FNV-1 32비트 해시 알고리즘에 대하여
저는 수학자는 아니지만, 수학을 모르는 동료들이 이해할 수 있는 비유를 사용하여 이 해시 함수를 설명하려고 노력할 것입니다. 과학적으로 정확하고 무서운 수학적 설명을 선호한다면, 다른 곳에서 찾을 수 있을 거라고 확신합니다 ;-)
먼저, FNV-1 알고리즘을 특별한 스무디를 만드는 레시피처럼 생각해 보겠습니다. 추가하는 각 재료(과일, 우유 또는 꿀 등)는 문자, 숫자 또는 전체 파일과 같은 데이터 조각을 나타냅니다.
이제 목표는 이러한 재료를 매우 특정한 방식으로 섞어서 레시피의 아주 작은 변화(블루베리를 하나 더 넣는 것과 같이)만으로도 스무디의 맛이 완전히 달라지게 하는 것입니다. 이것이 해시 함수가 작동하는 방식입니다. 해시 함수는 모든 고유한 재료 세트(또는 입력 데이터)에 대해 고유한 "맛"(또는 해시 값)을 만듭니다.
FNV-1 알고리즘이 이를 수행하는 방식은 여러 단계로 구성된 프로세스입니다.
1단계: 기준(오프셋 기준)으로 시작
이것을 블렌더에 특별한 스무디 베이스를 붓는 것과 같다고 생각하세요. 이 베이스는 어떤 재료를 추가하든 항상 동일합니다. FNV-1에서 이것을 "오프셋 베이스"라고 합니다. 그저 멋진 시작 번호일 뿐입니다.
2단계: 재료를 하나씩 추가합니다(데이터 처리)
이제 재료를 하나씩 추가하기 시작합니다. 딸기, 바나나, 꿀이라고 합시다. 각각은 데이터 바이트를 나타냅니다.
3단계: 비밀 멀티플라이어(FNV Prime)로 블렌딩
각 재료를 넣은 후 블렌드 버튼을 누르지만, 여기에 반전이 있습니다. 블렌더는 모든 것을 FNV 프라임이라는 비밀 "매직 넘버"로 곱합니다. 이것은 정말 잘 섞이는 데 도움이 됩니다.
4단계: 마법의 한 방울 추가(XOR 연산)
다음 재료를 넣기 전에 약간의 마법의 가루를 뿌립니다(이것이 XOR 연산입니다). 예상치 못한 방식으로 맛을 뒤집는 것과 같으며, 작은 변화라도 큰 차이를 만들어냅니다.
5단계: 완료될 때까지 반복
새로운 재료가 들어올 때마다 계속해서 섞고 마법을 뿌려 모든 것을 처리할 때까지 반복합니다.
6단계: 최종 스무디(해시 값)
다 마쳤으면 스무디를 부어줍니다. 최종 맛(해시 값)은 그 재료의 정확한 조합에 따라 고유합니다. 블루베리를 하나 더 넣었다면 맛이 완전히 달랐을 겁니다.
여기에 제시된 버전은 원래 FNV-1 32비트 버전입니다. 개선된 FNV-1a 32비트 버전도 있습니다: Fowler-Noll-Vo FNV1a-32 해시 코드 계산기