이 도구는 무엇인가요?
해시 함수는 임의의 입력을 받아 다이제스트라는 고정 길이의 16진수 문자열로 변환합니다. 같은 입력은 항상 같은 다이제스트를 만들어내고, 단 한 글자만 바뀌어도 완전히 다른 결과가 나옵니다. 이 도구는 널리 쓰이는 다섯 가지 알고리즘 — MD5, SHA-1, SHA-256, SHA-384, SHA-512 — 을 같은 입력에 대해 실행하므로 서로 비교하거나 필요한 것을 바로 가져다 쓸 수 있습니다.
이 다이제스트들은 단방향입니다: 해시로부터 원래 텍스트를 복원하는 것은 수학적으로 사실상 불가능합니다. 흔히 온라인에서 해시를 "복호화"한다고 하는 것은 실제로는 조회입니다 — 그 사이트는 여러분의 해시가 흔한 비밀번호나 문구를 미리 계산해둔 수십억 개의 해시 목록 중 하나와 일치하는지 확인할 뿐입니다. 입력이 그 목록에 없다면 찾을 수 없습니다. 실행할 역함수 자체가 존재하지 않기 때문입니다.
SHA-2 계열(SHA-256, SHA-384, SHA-512)은 FIPS 180-4에서 NIST가 표준화했으며 아직 깨지지 않았습니다. MD5와 SHA-1은 사정이 다릅니다: 2004년 MD5에서, 2017년 SHA-1에서("SHAttered" 공격) 실제 충돌 공격이 입증되었기 때문에 둘 다 암호학적으로 깨진 것으로 간주됩니다.
왜 사용해야 할까요?
- 여러 도구를 오갈 필요 없이 다섯 가지 해시 알고리즘을 한 번에 계산합니다.
- 공개된 값과 MD5, SHA-1, SHA-256 체크섬을 비교해 무결성을 검증할 수 있습니다.
- 더 긴 출력이 필요한 경우 SHA-384나 SHA-512 다이제스트를 생성할 수 있습니다.
- 임의의 텍스트로부터 결정적인(deterministic) ID나 캐시 키를 만들 수 있습니다.
- 100% 로컬: 입력한 텍스트는 브라우저를 벗어나지 않으므로 민감한 텍스트에도 안전합니다.
사용 방법
- 입력창에 텍스트를 입력하거나 붙여넣으세요.
- "Generate"를 클릭하세요.
- MD5, SHA-1, SHA-256, SHA-384, SHA-512 결과를 확인하세요(대상 시스템이 대문자를 기대한다면 "Uppercase output"을 체크하세요).
- 필요한 해시 옆의 "Copy"를 클릭하세요.
예시
입력
hello결과
MD5: 5d41402abc4b2a76b9719d911017c592
SHA-1: aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
SHA-256: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824해시는 결정적입니다: "hello"는 어떤 도구에서든, 언제나 이 값 그대로 나옵니다.
알고리즘 하나만 필요하신가요?
필요한 알고리즘을 이미 알고 있고 다른 결과로 페이지가 복잡해지는 게 싫다면, 단일 알고리즘 전용 도구가 더 빠르게 확인할 수 있습니다.
다섯 가지 알고리즘 비교
다섯 알고리즘 모두 단방향 해시 함수이지만 출력 길이와 보안 강도가 다릅니다.
| 알고리즘 | 출력 크기 | 보안 상태 | 주요 용도 |
|---|---|---|---|
| MD5 | 128비트(16진수 32자) | 깨짐 — 충돌을 인위적으로 만들 수 있음 | 체크섬, 캐시 키, 중복 제거 |
| SHA-1 | 160비트(16진수 40자) | 깨짐 — 2017년부터 실제 충돌 공격 존재 | 레거시 시스템 호환 목적으로만 |
| SHA-256 | 256비트(16진수 64자) | 안전, 현재 업계 표준 | 디지털 서명, TLS, 블록체인, 무결성 검사 |
| SHA-384 | 384비트(16진수 96자) | 안전, SHA-256보다 긴 출력 | 고신뢰 서명, 일부 TLS/PKI 구성 |
| SHA-512 | 512비트(16진수 128자) | 안전, 여기서 가장 긴 출력 | 최대 다이제스트 길이가 필요한 애플리케이션 |
흔한 활용 사례
- 다운로드한 파일이 실행하기 전에 배포자가 공개한 체크섬과 일치하는지 확인하기.
- 임의의 텍스트로부터 결정적인 캐시 키나 ID를 생성하기.
- 두 문서나 레코드가 바이트 단위로 동일한지 직접 비교하지 않고 확인하기.
- 애플리케이션이 명시적으로 요구할 때 더 강력한 다이제스트(SHA-384/SHA-512)를 생성하기.
자주 묻는 질문
해시를 원래 텍스트로 복호화할 수 있나요?
아니요. 해싱은 애초에 단방향으로 설계되어 있어서, 다이제스트를 다시 입력값으로 되돌릴 수 있는 키나 수학적 연산이 존재하지 않습니다. "MD5를 복호화"하거나 "SHA-256을 복호화"한다고 주장하는 사이트는 사실 흔한 입력값과 그 해시를 미리 계산해둔 거대한 표를 검색하는 것뿐입니다. 원래 텍스트가 그 표에 없을 만큼 특이하다면 누구도 복원할 수 없습니다.
그러면 사이트들은 비밀번호를 평문으로 저장하지 않고 어떻게 확인하나요?
비밀번호 자체가 아니라 비밀번호의 해시를 저장합니다. 로그인할 때 입력한 값을 해시로 바꾸고 두 해시를 비교합니다. 일치하면 비밀번호도 일치한다는 뜻이며, 사이트가 실제 비밀번호를 저장하거나 "복호화"할 필요가 전혀 없습니다.
어떤 알고리즘을 써야 하나요?
보안이 중요한 용도(서명, 인증서, 다운로드 검증)라면 SHA-256 이상을 사용하세요 — MD5와 SHA-1은 둘 다 암호학적으로 깨졌으므로 보안 목적으로 신뢰해서는 안 됩니다. 체크섬, 캐시 키, 중복 제거 같은 비보안 용도라면 MD5도 여전히 문제없고 계산 속도도 더 빠릅니다.
같은 텍스트인데 다른 도구와 해시가 다르게 나오는 이유는요?
대개 눈에 보이지 않는 차이 때문입니다: 끝의 줄바꿈이나 공백, 서로 다른 줄바꿈 방식(\r\n vs \n), 또는 다른 텍스트 인코딩입니다. 바이트 단위로 완전히 같은 입력이라면 올바르게 구현된 모든 도구에서 항상 동일한 해시가 나옵니다.
제 텍스트가 서버로 전송되나요?
아닙니다. MD5는 브라우저에서 자바스크립트로 계산되고, SHA-1/SHA-256/SHA-384/SHA-512는 브라우저 내장 Web Crypto API를 사용합니다. 아무것도 기기를 벗어나지 않습니다.
실제로는 어떤 해시를 써야 하나요?
파일 무결성 검증, 서명, 비밀번호 관련 용도 등 보안과 관련된 일이라면 SHA-256을 선택하세요 — NIST FIPS 180-4 표준이며 대부분의 소프트웨어가 이 방식으로 체크섬을 배포합니다. MD5와 SHA-1은 캐시 키, 중복 제거, 이를 요구하는 레거시 시스템 연동 같은 비보안 용도에서만 허용됩니다.