🔐 해시 함수 구현 및 테스트
해시 함수란?
임의 크기의 데이터를 고정 크기의 값으로 매핑하는 함수입니다.
같은 입력에 대해서는 항상 같은 결과를, 다른 입력에 대해서는 가능한 다른 결과를 생성합니다.
💻 해시 함수 구현 코드
// 1. 간단한 해시 함수 (교육용)
function simpleHash(str) {
let hash = 0;
for (let i = 0; i < str.length; i++) {
const char = str.charCodeAt(i);
hash = ((hash << 5) - hash) + char;
hash = hash & hash; // 32비트 정수로 변환
}
return Math.abs(hash);
}
// 2. DJB2 해시 함수 (실용적)
function djb2Hash(str) {
let hash = 5381;
for (let i = 0; i < str.length; i++) {
hash = ((hash << 5) + hash) + str.charCodeAt(i);
}
return Math.abs(hash);
}
// 3. FNV-1a 해시 함수 (빠르고 균등)
function fnv1aHash(str) {
let hash = 2166136261;
for (let i = 0; i < str.length; i++) {
hash ^= str.charCodeAt(i);
hash *= 16777619;
}
return Math.abs(hash);
}