유틸리티

MD5, SHA-256 해시값이란? 파일 무결성 확인하는 법

오픈소스 프로그램을 다운로드했는데 공식 사이트에 "SHA-256: 3a7b2c..."라는 문자열이 적혀 있다. 이 해시값을 내가 받은 파일의 해시값과 대조하면, 파일이 중간에 변조되지 않았는지 확인할 수 있다.

해시값이 뭔가

해시(Hash)는 어떤 데이터를 고정 길이의 문자열로 바꿔주는 함수다. 같은 입력이면 항상 같은 결과가 나오고, 입력이 1비트만 달라져도 결과가 완전히 달라진다. 이 특성 때문에 파일 무결성 확인, 비밀번호 저장, 디지털 서명에 쓰인다.

주요 해시 알고리즘 비교

알고리즘출력 길이보안 강도용도
MD5128비트 (32자)취약체크섬(비보안), 캐시 키
SHA-1160비트 (40자)취약레거시 시스템
SHA-256256비트 (64자)안전파일 검증, 인증서, 블록체인
SHA-512512비트 (128자)안전대용량 파일, 높은 보안 요구
주의 MD5와 SHA-1은 충돌 취약점이 발견되어 보안 용도로는 더 이상 권장되지 않는다. 파일 무결성 검증에도 SHA-256 이상을 쓰는 것이 안전하다.

해시값으로 파일을 검증하는 과정

  1. 공식 사이트에서 파일과 함께 제공되는 해시값을 복사한다
  2. 다운로드한 파일의 해시값을 생성한다
  3. 두 해시값을 비교해서 일치하면 원본 그대로라는 뜻이다

명령어로도 할 수 있지만 과정이 번거롭다. 해시 생성기에 파일을 끌어다 놓으면 MD5, SHA-256, SHA-512 값이 한 번에 나온다. 비교 기능도 있어서 공식 해시값을 붙여넣으면 일치 여부를 바로 확인해준다.

텍스트 해시는 어디에 쓰이나

파일뿐 아니라 텍스트 문자열의 해시도 실무에서 자주 필요하다.

  • API 인증 — 요청 파라미터를 해시로 변환해서 서명값을 만들 때
  • 비밀번호 저장 — 원문 대신 해시값을 DB에 저장 (복호화 불가)
  • 데이터 비교 — 대용량 텍스트 두 개가 동일한지 해시값으로 빠르게 확인

해시값은 데이터의 지문이다. 원본을 역추적할 수는 없지만, 원본이 바뀌었는지는 즉시 알 수 있다.