오픈소스 소프트웨어 다운로드 페이지에 가면 파일 옆에 긴 영숫자 문자열이 적혀 있다. SHA-256이라는 라벨이 붙어 있는데, 이게 해시값이다. 내가 받은 파일이 원본과 동일한지 확인하는 디지털 지문 같은 것이다.
해시값은 어떻게 작동하는가
해시 함수는 어떤 데이터든 고정 길이의 문자열로 변환한다. 같은 입력이면 항상 같은 결과가 나오고, 입력이 1비트만 달라져도 결과가 완전히 바뀐다. 그래서 파일이 전송 중에 깨졌거나 누군가 수정했으면 해시값이 달라진다.
알고리즘별 특징
| 알고리즘 | 출력 길이 | 보안 수준 | 용도 |
|---|---|---|---|
| MD5 | 128비트 | 취약 (충돌 발견됨) | 파일 무결성 확인 (비보안) |
| SHA-1 | 160비트 | 취약 | Git 커밋 해시 |
| SHA-256 | 256비트 | 안전 | 현재 표준, 블록체인 |
| SHA-512 | 512비트 | 안전 | 고보안 환경 |
주의 MD5는 서로 다른 데이터에서 같은 해시값이 나오는 충돌이 발견된 상태다. 보안이 중요한 용도에는 SHA-256 이상을 써야 한다. 단순 파일 확인 용도로는 여전히 쓰이고 있다.
해시값을 생성하고 비교하는 법
텍스트의 해시값이 필요하면 해시 생성기에 문자열을 입력하면 MD5, SHA-1, SHA-256, SHA-512가 한 번에 나온다. 파일의 해시값을 확인할 때는 파일을 드래그해서 올리면 된다. 브라우저에서 처리되니까 파일이 서버로 전송되지 않는다.
다운로드한 파일을 검증하려면 배포 사이트에 적힌 해시값과 내 파일의 해시값을 비교하면 된다. 해시 비교 기능에 두 값을 붙여넣으면 일치 여부를 바로 알려준다.
해시를 쓰는 실제 사례
- 소프트웨어 다운로드 검증 — ISO 파일이나 설치 파일이 변조되지 않았는지 확인
- 비밀번호 저장 — 서버에 비밀번호 원문 대신 해시값을 저장해서 유출 피해 최소화
- 데이터 중복 검사 — 파일 내용이 동일한지 해시값으로 빠르게 비교
- 블록체인 — 거래 데이터의 무결성을 SHA-256 해시 체인으로 보장
해시값 비교는 파일이 진짜 원본인지 확인하는 가장 간단한 방법이다. 중요한 파일을 받았을 때 30초만 투자하면 안심할 수 있다.