파일을 내려받은 뒤 원본과 동일한지 확인할 때 가장 먼저 떠오르는 방법이 무료 MD5 해시 비교입니다. 별도 프로그램을 설치하지 않아도 대부분의 운영체제에 이미 계산 도구가 들어 있고, 웹 기반 도구까지 포함하면 선택지는 더 넓어집니다. 다만 MD5는 용도에 따라 여전히 유용한 도구이기도 하고, 절대 쓰면 안 되는 영역도 분명히 존재합니다. 이 글에서는 실제로 해시를 만드는 방법부터 결과를 어떻게 해석해야 하는지까지 순서대로 정리합니다.
MD5가 정확히 무엇을 계산하는가
MD5는 1991년 발표된 해시 함수로, 입력 데이터의 길이와 상관없이 항상 128비트(16바이트) 값을 만들어냅니다. 사람이 읽을 때는 보통 16진수 32자리 문자열로 표시됩니다. 예를 들어 빈 문자열의 MD5 값은 언제나 d41d8cd98f00b204e9800998ecf8427e입니다.
핵심 성질은 두 가지입니다. 첫째, 같은 입력은 언제 어디서 계산해도 같은 결과를 냅니다. 둘째, 입력이 1비트만 달라져도 결과 전체가 완전히 달라집니다. 이 두 성질 덕분에 파일이 전송 도중 깨졌는지, 복사본이 원본과 같은지를 32자리 문자열 비교만으로 판단할 수 있습니다.
무료 MD5 해시 생성 3단계
도구가 무엇이든 절차는 동일합니다. 값을 만들고, 기준값을 확보하고, 비교합니다.
- 대상 파일이나 문자열의 해시를 계산합니다. 운영체제 기본 명령어를 쓰면 설치가 필요 없습니다.
- 배포처가 공개한 기준 해시를 찾습니다. 보통 다운로드 페이지에 checksum, MD5SUMS, SHA256SUMS 같은 이름으로 함께 게시됩니다.
- 두 값을 문자 단위로 비교합니다. 대소문자 차이는 무시해도 되지만, 한 글자라도 다르면 다른 파일입니다.
운영체제별 명령어는 다음과 같습니다.
| 환경 | 명령어 | 비고 |
|---|---|---|
| Windows | certutil -hashfile 파일명 MD5 | 기본 내장, PowerShell은 Get-FileHash -Algorithm MD5 |
| macOS | md5 파일명 | md5 -s "문자열"로 문자열도 가능 |
| Linux | md5sum 파일명 | md5sum -c MD5SUMS로 일괄 검증 |
파일이 아니라 짧은 문자열이나 설정값 여러 개를 빠르게 확인해야 할 때는 명령어를 매번 입력하기보다 웹 기반 해시 생성기를 열어두고 붙여넣는 편이 훨씬 빠릅니다. 다만 민감한 데이터를 다룰 때는 다음 항목의 기준을 먼저 확인해야 합니다.
온라인 도구와 로컬 명령어, 언제 무엇을 쓰나
둘은 대체재라기보다 상황에 따라 나뉘는 선택지입니다.
- 수 GB짜리 ISO 파일: 로컬 명령어가 유일한 현실적 선택입니다. 업로드 자체가 비효율적입니다.
- 짧은 문자열, API 서명 테스트: 웹 도구가 편합니다. 결과를 바로 복사해 붙여넣을 수 있습니다.
- 서버 접속 권한이 없는 환경: 브라우저만 있으면 되는 웹 도구가 답입니다.
- 반복 작업, 다수 파일 일괄 검증:
md5sum -c같은 명령어로 스크립트화하는 편이 훨씬 낫습니다.
fc, Linux에서는 diff나 md5sum -c로 기계에게 비교를 맡기는 것이 정확합니다.MD5를 써도 되는 경우와 안 되는 경우
MD5는 2004년 이후 충돌 공격이 실용적인 수준으로 입증됐습니다. 서로 다른 두 파일이 같은 MD5 값을 갖도록 의도적으로 만들어내는 것이 일반 PC에서도 가능하다는 뜻입니다. 그래서 판단 기준이 명확히 갈립니다.
전송 중 비트가 깨졌는지, 복사가 제대로 끝났는지, 캐시 키가 중복되는지처럼 악의적 의도가 없는 오류를 잡는 용도라면 MD5는 여전히 빠르고 실용적입니다. 반면 아래 용도에는 절대 사용하면 안 됩니다.
- 비밀번호 저장: bcrypt, scrypt, Argon2 같은 전용 알고리즘을 써야 합니다.
- 전자서명 및 인증서 검증
- 배포 파일의 위변조 방지: 공격자가 조작한 파일을 같은 해시로 맞출 수 있습니다.
- 법적 증거로 쓰이는 무결성 증명
| 항목 | MD5 | SHA-256 |
|---|---|---|
| 출력 길이 | 128비트 (32자) | 256비트 (64자) |
| 속도 | 빠름 | 상대적으로 느림 |
| 충돌 저항성 | 깨짐 | 안전 |
| 권장 용도 | 오류 검출, 중복 판별 | 보안 검증 전반 |
배포처가 MD5와 SHA-256을 함께 제공한다면 망설일 이유 없이 SHA-256을 기준으로 삼으면 됩니다. 명령어도 sha256sum, certutil -hashfile 파일명 SHA256처럼 알고리즘 이름만 바꾸면 되므로 추가 학습 비용이 사실상 없습니다.
값이 다르게 나올 때 확인할 것
기준값과 계산값이 다르다고 해서 곧바로 파일 손상이라 단정하기는 이릅니다. 실무에서 흔한 원인은 따로 있습니다.
- 다운로드 미완료: 파일 크기부터 비교합니다. 크기가 다르면 해시를 볼 필요도 없습니다.
- 텍스트 파일의 줄바꿈 차이: Windows(CRLF)와 Unix(LF) 사이를 오간 텍스트 파일은 내용이 같아도 해시가 달라집니다.
- 버전 불일치: 기준 해시가 이전 릴리스의 것인 경우가 의외로 잦습니다. 파일명과 버전 번호를 다시 확인합니다.
- 보이지 않는 공백: 문자열 해시를 계산할 때 끝에 붙은 공백이나 개행이 결과를 바꿉니다.
정리하면 MD5는 무료로 쉽게 쓸 수 있는 검증 도구이되, 그 결과를 어디까지 신뢰할지 선을 긋는 것이 실제 실력입니다. 오류 검출에는 쓰고, 보안 판단에는 SHA-256 계열로 넘어가는 습관만 지켜도 대부분의 상황은 정리됩니다.