인터넷에서 프로그램을 다운로드했는데, 원본과 같은 파일인지 어떻게 확인할까. 용량이 같아도 내용이 바뀌었을 수 있다. 이때 쓰는 게 해시값이다.
해시값이란
해시(Hash)는 어떤 데이터를 고정 길이의 문자열로 변환한 결과다. 같은 입력이면 항상 같은 해시값이 나오고, 입력이 1글자만 달라도 결과가 완전히 바뀐다. 파일의 "디지털 지문"이라고 생각하면 쉽다.
주요 해시 알고리즘 비교
| 알고리즘 | 출력 길이 | 특징 |
|---|---|---|
| MD5 | 128비트 (32자) | 속도 빠르지만 충돌 취약점 있음. 보안 용도 비추천 |
| SHA-1 | 160비트 (40자) | MD5보다 안전하나 역시 충돌 발견됨 |
| SHA-256 | 256비트 (64자) | 현재 가장 널리 쓰이는 보안 해시 |
| SHA-512 | 512비트 (128자) | 더 긴 출력, 대용량 데이터에 적합 |
주의 MD5는 충돌 취약점이 알려져 있어, 보안이 중요한 곳에서는 SHA-256 이상을 쓰는 게 안전하다. 단순 파일 확인 용도로는 MD5도 충분하다.
해시값은 어디에 쓰일까
- 파일 무결성 검증
- 소프트웨어 배포 사이트에서 SHA-256 해시를 함께 공개한다. 다운로드 후 해시값을 비교하면 파일이 변조되지 않았는지 확인할 수 있다.
- 비밀번호 저장
- 서버에 비밀번호를 그대로 저장하면 유출 시 위험하다. 해시로 변환해서 저장하면 원래 비밀번호를 역추적하기 어렵다.
- 데이터 중복 확인
- 파일 이름이 달라도 해시값이 같으면 내용이 동일한 파일이다. 중복 파일 정리에 활용된다.
해시값 생성하고 비교하는 법
윈도우 명령 프롬프트에서 certutil -hashfile 파일명 SHA256을 입력해도 되지만, 여러 알고리즘을 동시에 확인하거나 두 해시를 비교하려면 전용 도구가 편하다. 온라인 해시 생성기에 텍스트를 입력하거나 파일을 끌어다 놓으면 MD5, SHA-1, SHA-256, SHA-512 해시가 한 번에 생성된다. 비교 탭에서 두 해시값을 붙여넣으면 일치 여부도 바로 확인할 수 있다.
해시값 확인은 번거로워 보이지만, 중요한 파일을 다룰 때 한 번만 해두면 안심할 수 있다.