해시 함수란?
해시 함수(Hash Function)는 임의 길이의 데이터를 입력받아 고정된 길이의 짧은 값(해시값)을 출력하는 일방향 함수입니다. 같은 입력은 항상 같은 해시값을 만들고, 입력이 1비트만 달라도 완전히 다른 해시가 나오는 특성이 있어 데이터의 무결성 검증(파일이 변조되지 않았는지)과 비밀번호 저장(원문 노출 없이 일치 확인)에 널리 쓰입니다. 본 도구는 4가지 표준 알고리즘을 모두 제공합니다 — MD5(128비트, 빠르지만 보안 취약), SHA-1(160비트, 단계적 폐기 중), SHA-256(256비트, 현재 표준), SHA-512(512비트, 최고 보안). 텍스트는 입력 즉시 4가지 해시가 동시 생성되고, 파일은 드래그 앤 드롭으로 업로드해 ArrayBuffer 단위로 해싱합니다. 모든 처리가 브라우저 안에서만 이뤄져 민감한 파일도 안전하게 검증 가능합니다.
4가지 해시 알고리즘 비교
| 알고리즘 | 출력 길이 | 속도 | 보안 상태 |
|---|---|---|---|
| MD5 | 128비트 (32자) | 매우 빠름 | 취약 (충돌 발견) |
| SHA-1 | 160비트 (40자) | 빠름 | 단계적 폐기 (2017 SHAttered 공격) |
| SHA-256 | 256비트 (64자) | 보통 | 안전 (현재 표준) |
| SHA-512 | 512비트 (128자) | 중간 | 매우 안전 |
해시 함수 활용 사례
파일 무결성 검증 (체크섬)
OS 설치 ISO·소프트웨어 다운로드 파일이 변조 없이 받아졌는지 확인. 다운로드 페이지에 공시된 SHA-256과 본인이 받은 파일의 해시가 일치하면 OK.
비밀번호 저장
웹사이트는 비밀번호 원문을 저장하지 않고 해시값만 저장. 로그인 시 입력한 비밀번호를 해시해서 저장된 값과 비교. 해시만 유출되어도 원문 추적 어려움(SHA-256 + salt 권장).
디지털 서명
긴 문서 전체를 서명하지 않고, 해시값(짧은 고정 길이)만 개인키로 서명. 효율성과 보안을 동시에 확보. 전자세금계산서·전자문서에 사용.
블록체인·암호화폐
비트코인은 SHA-256을 사용해 블록 간 연결고리(이전 블록 해시)를 만들고 작업증명(PoW) 채굴에 활용. 이더리움은 Keccak-256 사용.
중복 파일 탐지·캐싱
거대한 파일 두 개를 비교할 때 전체 비트를 비교하지 않고 해시만 비교하면 빠름. Git의 커밋 해시, CDN 캐시 키, 백업 중복 제거 등에 활용.
자주 묻는 질문 (FAQ)
Q. MD5는 왜 사용하면 안 되나요?
A. 1996년 이후 충돌 공격(서로 다른 두 입력이 같은 해시를 만드는 경우)이 발견되어 보안 용도로는 부적합합니다. 다만 파일 무결성 검증이나 단순 식별자(Git의 짧은 해시 등) 용도로는 여전히 사용됩니다.
Q. SHA-256과 SHA-512 — 어느 게 더 좋나요?
A. 보안 강도는 SHA-512가 더 높지만, SHA-256도 현재 컴퓨팅 파워로는 충돌 공격이 사실상 불가능합니다. 32비트 시스템에서는 SHA-256이 더 빠르고, 64비트 시스템에서는 SHA-512가 더 빠릅니다. 일반 용도는 SHA-256으로 충분합니다.
Q. 해시값에서 원문을 복원할 수 있나요?
A. 이론적으로는 불가능합니다(일방향 함수). 다만 자주 쓰이는 비밀번호(123456, password 등)는 미리 해시해 둔 "레인보우 테이블"로 역추적 가능합니다. 이 때문에 비밀번호 저장 시에는 사용자별 솔트(salt)를 추가하는 것이 표준입니다.
Q. 같은 파일을 다른 도구로 해시하면 결과가 같나요?
A. 네, 모두 표준 알고리즘이라 어떤 도구·언어·OS로 해시해도 동일한 결과가 나옵니다. 다만 텍스트 파일은 줄바꿈 문자(LF vs CRLF)나 인코딩(UTF-8 vs UTF-16)에 따라 해시가 달라질 수 있어 주의.
Q. 입력한 텍스트나 파일이 외부로 전송되나요?
A. 아니요. 모든 해시 계산은 브라우저의 Web Crypto API를 통해 사용자 기기 내에서만 수행됩니다. 네트워크 요청 없이 완전히 로컬에서 동작하므로, 비밀번호·민감 파일도 안전하게 해시할 수 있습니다.
Q. 대용량 파일도 해시할 수 있나요?
A. 가능하나, 브라우저 메모리 한계로 수 GB 이상 파일은 처리에 시간이 걸리거나 실패할 수 있습니다. 대용량 파일은 명령줄 도구(macOS/Linux: shasum, Windows: CertUtil)를 권장합니다.