도구상자FREE ONLINE TOOLS
← 가이드 목록

해시(SHA-256)란? — 암호화와의 차이와 쓰임새

다운로드 페이지의 "SHA-256 체크섬", 유출 사고 기사의 "비밀번호는 해시로 저장되어 있었다" — 해시는 보안 이야기마다 등장하지만 암호화와 자주 혼동됩니다. 둘은 목적이 다른 별개의 기술입니다. 해시의 성질과 실제 쓰임새를 정리합니다.

해시 함수란 — 디지털 지문

해시 함수는 어떤 길이의 입력이든 고정 길이의 값(해시값)으로 바꾸는 함수입니다. 예를 들어 SHA-256은 무엇을 넣든 64자리 16진수를 내놓습니다.

  • hello2cf24dba5fb0a30e... (64자)
  • 10GB 동영상 → 역시 64자

같은 입력은 항상 같은 해시값이 나오므로, 해시값은 데이터의 지문 역할을 합니다. 지문만 비교하면 내용 전체를 비교한 것과 같습니다.

해시의 세 가지 성질

  • 일방향: 해시값에서 원문을 역산할 수 없습니다. 이 점이 인코딩(Base64)·암호화와 결정적으로 다릅니다.
  • 눈사태 효과: 입력이 한 글자만 달라져도 해시값 전체가 완전히 달라집니다. helloHello의 해시는 전혀 닮지 않았습니다.
  • 충돌 회피: 서로 다른 입력이 같은 해시값을 갖는 일(충돌)이 사실상 일어나지 않도록 설계됩니다.
인코딩(Base64)암호화(AES)해시(SHA-256)
되돌리기누구나 가능키가 있으면 가능불가능
목적표현 변환내용 숨기기지문·검증
키 필요없음있음없음

어디에 쓰이나 — 무결성·비밀번호

  • 파일 무결성(체크섬): 배포처가 공개한 SHA-256 값과 내가 받은 파일의 해시값이 일치하면, 다운로드 중 손상되거나 변조되지 않았다는 뜻입니다.
  • 비밀번호 저장: 서비스는 비밀번호 원문 대신 해시값을 저장합니다. 로그인 때 입력값을 해시해 비교하면 되고, 유출돼도 원문이 드러나지 않습니다. 실제로는 솔트(salt)를 더하고 bcrypt처럼 일부러 느린 전용 해시를 씁니다.
  • 중복 탐지·전자서명: 같은 파일인지 빠르게 비교하거나, 문서가 서명 후 변경되지 않았음을 증명하는 데도 해시가 들어갑니다.
Hash 생성텍스트·파일의 SHA-256 등 해시값을 즉시 계산 생성하기 →

MD5는 그만 — 알고리즘 선택

한때 표준이던 MD5와 SHA-1은 충돌 공격이 실제로 가능해져 보안 용도로는 폐기됐습니다. 서로 다른 두 파일이 같은 해시값을 갖도록 만들 수 있다는 뜻이라, 위조 검증에 쓸 수 없습니다.

권장: 무결성 검증·서명 등 보안이 걸린 곳에는 SHA-256 이상(SHA-2·SHA-3 계열)을 쓰세요. MD5는 보안과 무관한 간단한 중복 확인 정도에만 제한적으로 사용합니다. 비밀번호 저장에는 SHA-256 단독이 아니라 bcrypt·Argon2 같은 전용 알고리즘이 표준입니다.
자주 묻는 질문
Q. 해시와 암호화는 뭐가 다른가요?

암호화는 키가 있으면 원문으로 되돌릴 수 있는 양방향 변환이고, 해시는 원문으로 되돌릴 수 없는 일방향 변환입니다. 그래서 다시 읽어야 하는 데이터(메시지·파일)는 암호화하고, 원문을 알 필요 없이 일치 여부만 확인하면 되는 것(비밀번호)은 해시를 사용합니다.

Q. 사이트는 왜 비밀번호를 해시로 저장하나요?

서버가 해킹당해도 원래 비밀번호를 알 수 없게 하기 위해서입니다. 가입 시 비밀번호의 해시값만 저장해 두고, 로그인할 때 입력값을 같은 방식으로 해시해 저장된 값과 비교합니다. 해시는 역산이 불가능해 유출되어도 원문 복원이 어렵습니다. 실제 서비스는 SHA-256 단독보다 bcrypt처럼 일부러 느리게 설계된 비밀번호 전용 해시에 솔트(salt)를 더해 사용합니다.

Q. MD5나 SHA-1은 왜 쓰지 말라고 하나요?

서로 다른 두 입력이 같은 해시값을 갖게 만드는 충돌 공격이 실제로 가능해졌기 때문입니다. 위조 파일을 정상 파일처럼 꾸밀 수 있어 보안 용도로는 폐기됐습니다. 현재는 SHA-256 이상(SHA-2·SHA-3 계열)을 쓰는 것이 표준이며, MD5는 보안과 무관한 단순 중복 확인 정도에만 제한적으로 쓰입니다.

함께 보면 좋은 가이드