유틸리티

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

인터넷에서 프로그램을 다운로드했는데, 배포 페이지에 'SHA-256: a3f2b...'라는 긴 문자열이 적혀 있다. 이걸 왜 제공하는 건지 모르면 그냥 넘어가게 되는데, 사실 파일이 변조되지 않았는지 검증하는 핵심 장치다.

해시값이란

해시값은 입력 데이터를 고정된 길이의 문자열로 변환한 결과다. 원본이 1바이트라도 달라지면 해시값이 완전히 바뀐다. 그래서 파일이 원본 그대로인지 확인하는 '디지털 지문' 역할을 한다.

특징
  • 같은 입력은 항상 같은 해시값을 만든다
  • 입력이 조금만 바뀌어도 결과가 완전히 달라진다
  • 해시값에서 원본을 역으로 복원할 수 없다 (일방향)

MD5, SHA-256, SHA-512 비교

알고리즘출력 길이보안 강도주요 용도
MD5128비트 (32자)낮음 (충돌 취약)간단한 체크섬, 캐시 키
SHA-1160비트 (40자)낮음 (사용 권장 안 함)레거시 시스템 호환
SHA-256256비트 (64자)높음파일 검증, 인증서, 블록체인
SHA-512512비트 (128자)매우 높음고보안 환경, 대용량 파일

MD5는 속도가 빠르지만 충돌 취약점이 알려져 있어 보안 용도로는 SHA-256 이상을 쓰는 게 안전하다.

파일 무결성 확인하는 법

  1. 배포 사이트에서 제공하는 해시값(SHA-256 등)을 복사한다
  2. 다운로드한 파일의 해시값을 생성한다
  3. 두 값이 일치하는지 비교한다

파일을 드래그해서 해시 생성기에 놓으면 MD5, SHA-256, SHA-512 해시값이 동시에 나온다. 해시 비교 기능도 있어서 복사한 값과 생성된 값을 붙여넣으면 일치 여부를 바로 판별해준다. 파일이 서버로 전송되지 않으니 민감한 파일도 안심하고 확인할 수 있다.

출처가 불분명한 파일을 실행하기 전에 해시값부터 확인하는 습관을 들이면, 변조된 파일로 인한 피해를 예방할 수 있다.