해시 함수(Hash Function)란 어떤 길이의 입력이든
항상 같은 길이의 고정된 출력(지문·다이제스트)으로 바꿔주는 함수입니다.
같은 입력은 항상 같은 출력을 내지만(결정성), 출력만 보고 원래 입력을 역으로 알아낼 수는 없습니다(단방향성).
아래에서 브라우저 내장 SHA-256 알고리즘으로 직접 실험해 보세요.
🧮 실시간 SHA-256 계산기 Web Crypto API
입력 길이9 바이트
출력 길이항상 256비트 (64자 hex)
계산 중...
입력을 아무리 길게(혹은 짧게) 바꿔도 출력은 항상 64자리 16진수입니다.
한 글자짜리 "a"도, 소설 한 권도 출력 길이는 동일합니다.
🌊 눈사태 효과(Avalanche Effect) 비트 단위 비교
달라진 비트 수 (256비트 중)—
달라진 비율—
좋은 해시 함수는 입력이 단 1글자만 바뀌어도 출력 비트의 약 50%가
완전히 무작위로 뒤바뀝니다. 이걸 눈사태 효과라고 부릅니다 — 작은 변화가
눈덩이처럼 커져서 전혀 다른 결과가 되기 때문입니다. 빨간 칸이 달라진 비트입니다.
📐 해시 함수의 핵심 성질 4가지
1
결정성 (Determinism)
같은 입력 → 항상 같은 출력. 위 계산기에 같은 문자열을 여러 번 넣어도 결과는 동일합니다.
2
고정 길이 출력 (Fixed-length)
입력 크기와 무관하게 SHA-256은 항상 256비트를 출력합니다.
3
눈사태 효과 (Avalanche Effect)
입력 1비트 변화가 출력 전체를 무작위로 뒤흔듭니다. 위 데모로 직접 확인해 보세요.
4
역상·충돌 저항성 (Preimage / Collision Resistance)
해시값만 보고 원래 입력을 찾거나, 같은 해시를 내는 다른 입력 쌍을 찾는 것이
사실상 불가능해야 합니다. (관련: 생일 공격)