같은 알고리즘, 입력만 살짝 바꾸기
hello world
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
Hello world
4ae7c3b6ac0beff671efa8cf57386151c06e58ca53a78d83f36107316cec125f
대문자 하나 바뀌었을 뿐인데 해시가 완전히 달라졌습니다. 바로 *눈사태 효과* - 변경 감지 용도로 해시가 유용한 이유가 이것이죠.
MD5, SHA-1, SHA-256, SHA-384, SHA-512 해시를 즉시 생성합니다.
마지막 업데이트
Coddy는 브라우저에서 실제 코드를 작성하며 배웁니다. 인터랙티브 레슨, 즉각적인 피드백, 막힐 때 도와주는 AI까지.
해시 생성기는 입력값으로부터 *해시(hash)* - 짧고 고정된 길이의 지문 - 를 계산해 줍니다. 글자 하나만 달라져도 결과가 완전히 바뀌기 때문에, 파일 무결성 검증, 두 값을 통째로 비교하지 않고 같은지 확인하기, 콘텐츠 주소 기반 시스템(Git이 SHA-1/SHA-256을 쓰는 이유), 그리고 더 큰 보안 프로토콜의 구성 요소로 두루 쓰입니다.
쓸 만한 암호학적 해시 함수는 세 가지 성질을 만족합니다. *결정성*(같은 입력 → 같은 해시), *단방향성*(해시에서 원본을 복원할 수 없음), 그리고 *충돌 저항성*(같은 해시를 만드는 두 입력을 찾기가 사실상 불가능함). SHA-256, SHA-512 같은 최신 알고리즘은 세 조건을 모두 만족하지만, MD5나 SHA-1처럼 오래된 알고리즘은 이미 *깨졌기* 때문에 보안이 중요한 비교에는 절대 쓰면 안 됩니다.
해싱은 *암호화가 아닙니다*. 암호화는 키로 되돌릴 수 있지만, 해시는 처음부터 단방향으로 설계되어 있습니다. 비밀번호 저장 수단도 *아닙니다* - 비밀번호에는 bcrypt, scrypt, Argon2처럼 일부러 느리게 동작해 무차별 대입을 비싸게 만드는 *비밀번호 전용 해시*가 필요합니다.
문자열, JSON 조각, 라이선스 키 등 어떤 텍스트든 붙여넣으세요. 입력하는 즉시 해시가 갱신됩니다.
MD5, SHA-1, SHA-256, SHA-384, SHA-512 중에서 선택하세요. 일반적인 체크섬 용도로는 SHA-256이 가장 무난한 기본값입니다.
해시는 소문자 16진수로 표시됩니다. 대문자로 토글하거나 클립보드로 복사할 수 있습니다.
다운로드 페이지, Git 커밋, 체크섬 파일 등에서 가져온 기존 해시값을 붙여넣으면, 직접 만든 해시와 일치하는지 알려줍니다.
현장에서 자주 만나는 알고리즘들을 출력 길이와 현재 보안 상태와 함께 정리했습니다. SHA-1은 RFC 3174에, SHA-2 계열은 NIST FIPS 180-4에 명세되어 있습니다.
| 알고리즘 | 출력 크기 | 상태 / 주로 쓰이는 곳 |
|---|---|---|
| MD5 | 128비트 / 16진수 32자 | 깨짐 - 보안과 무관한 체크섬에만 사용 |
| SHA-1 | 160비트 / 16진수 40자 | 깨짐 - Git 히스토리, 레거시 시스템 외에는 비추천 |
| SHA-256 | 256비트 / 16진수 64자 | 표준 - TLS, 최신 Git, 블록체인 |
| SHA-384 | 384비트 / 16진수 96자 | SHA-2 계열을 선호하는 TLS 스위트에서 사용 |
| SHA-512 | 512비트 / 16진수 128자 | 강력함 - 64비트 하드웨어에서는 SHA-256보다 빠를 때도 있음 |
| bcrypt / scrypt / Argon2 | 가변 | *비밀번호용* 해시 - 비밀번호에는 SHA-x 말고 이걸 쓰세요 |
hello world
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
Hello world
4ae7c3b6ac0beff671efa8cf57386151c06e58ca53a78d83f36107316cec125f
대문자 하나 바뀌었을 뿐인데 해시가 완전히 달라졌습니다. 바로 *눈사태 효과* - 변경 감지 용도로 해시가 유용한 이유가 이것이죠.
SHA256: 3a7bd3e2360a3d290dd0b1aef6a04e9b… ubuntu.iso내가 받은 파일의 SHA-256을 계산하고, 배포자가 공개한 값과 비교해 보세요. 일치한다면 전송 중 손상이나 변조가 없었다는 뜻입니다.
OS 이미지, 언어 런타임, 서명된 릴리스 등은 거의 항상 파일 옆에 SHA-256을 같이 게시합니다. 설치 전에 꼭 확인하는 습관을 들이세요.
user@example.com
b58996c504c5638798eb6b511e6f49af
Gravatar는 MD5(email)을 아바타 키로 사용합니다. 비밀이 아닌 식별자 용도로는 MD5도 괜찮지만, 충돌이나 역상 공격이 문제가 되는 곳에는 절대 쓰면 안 됩니다.
==로 비교하기. 비교 전에 공백을 다듬고 대소문자를 통일하세요.해시 함수는 임의 길이의 입력을 받아 고정된 길이의 출력(해시)을 만들어 내는 함수입니다. 같은 입력은 항상 같은 해시를 만들고, 입력이 아주 조금만 바뀌어도 해시는 완전히 달라집니다.
암호학적 용도에서는 MD5는 깨진 상태입니다 - 충돌을 실제로 만들어내는 게 어렵지 않거든요. 파일 중복 제거, 캐시 키, Gravatar처럼 보안과 무관한 체크섬 용도라면 여전히 무방하지만, 서명·인증서·비밀번호 저장에는 절대 쓰지 마세요.
둘 다 SHA-2 계열입니다. SHA-256은 256비트, SHA-512는 512비트 출력을 만듭니다. 64비트 하드웨어에서는 SHA-512가 오히려 더 빠를 수도 있고요. 다만 오늘날 프로토콜에서 더 흔한 기본값은 SHA-256입니다.
SHA-256을 그대로 쓰면 안 됩니다. 비밀번호용으로 설계된 해시 - bcrypt, scrypt, Argon2 - 를 사용자별 솔트, 조정 가능한 비용 계수와 함께 사용하세요. 일부러 느리게 동작하도록 설계되어 있어서 무차별 대입 공격을 비싸게 만듭니다.
없습니다 - 해시 함수는 처음부터 단방향으로 설계되었습니다. 원본을 알아내는 유일한 방법은 입력을 추측해서 해시가 일치하는지 일일이 확인해 보는 것뿐입니다. 비밀번호에서 솔트와 느린 해싱이 중요한 이유가 바로 이것이죠.