개발자
🔒 해시 생성기
MD5·SHA-1·SHA-256·SHA-512 동시 + HMAC 서명·파일 무결성·SRI 해시. 전부 브라우저 처리.
🚨 중요 — MD5와 SHA-1은 충돌 공격이 발견되어 비밀번호 해싱·디지털 서명·SSL 인증서에 사용 금지입니다. 파일 무결성 확인(체크섬) 용도로만 사용하세요. 비밀번호는 반드시 bcrypt·scrypt·Argon2(서버 측)를 사용하세요. 본 도구는 모든 계산이 브라우저에서 수행되며, 입력 데이터는 외부로 전송되지 않습니다. 분야별 안전 안내는 면책조항 참고.
입력 대기 중...1992년 발표, 2004년 충돌 공격 발견. 빠르지만 보안 부적합.
입력 대기 중...1995년 발표, 2017년 SHAttered 충돌 시연. 디지털 서명 부적합.
입력 대기 중...SHA-2 계열. 현재 가장 널리 쓰이는 안전한 해시. NIST 표준.
입력 대기 중...SHA-2 계열 512bit. 64bit 시스템에서 SHA-256보다 빠름.
🛠️ 어떻게 사용하나요?
- 탭 1 텍스트 — 텍스트 입력 → MD5/SHA-1/SHA-256/SHA-512 4개 알고리즘 동시 출력 (디바운스 200ms 자동 재계산) + 안전성 배지
- 탭 2 파일 — 드래그앤드롭 또는 파일 선택 → 4 알고리즘 자동 계산 + 진행률 + 예상 해시와 자동 비교(무결성 검증)
- 탭 3 HMAC — Secret Key + Message → HMAC-SHA1/256/384/512 서명 생성 + GitHub/Slack/AWS/JWT 시나리오 프리셋
- 탭 4 가이드 — 알고리즘 비교·안전성 등급·SRI 사용법·CLI 명령 대조
💡 옵션값(인코딩·출력 형식·HMAC 알고리즘 등)은 자동 저장되지만, 입력 텍스트·Secret Key는 보안을 위해 저장하지 않습니다.
🧮 해시 알고리즘 비교
본 도구가 지원하는 5개 해시 알고리즘 비교. SHA-256이 현재 가장 권장되는 표준입니다.
| 알고리즘 | 출력 | 안전성 | 용도 |
|---|---|---|---|
| MD5 | 128bit / 32자 | 🟡 무결성 전용 (2004 충돌) | 체크섬, 캐시 키 |
| SHA-1 | 160bit / 40자 | 🟡 무결성 전용 (2017 충돌) | Git, 레거시 호환 |
| SHA-256 | 256bit / 64자 | 🟢 안전 (권장 표준) | HTTPS, JWT, SRI, 블록체인 |
| SHA-384 | 384bit / 96자 | 🟢 안전 | SRI, 고보안 |
| SHA-512 | 512bit / 128자 | 🟢 안전 (64bit 시스템 빠름) | 금융, 정부, 고보안 서명 |
ⓘ 본 도구는 RFC 1321 (MD5)·NIST FIPS 180-4 (SHA-2) 표준을 준수합니다. 모든 결과는 같은 입력에 대해 md5sum·shasum CLI 명령과 100% 일치합니다.
🚨 안전성 등급 — 무엇에 써야 / 쓰지 말아야
❌ MD5 · SHA-1을 절대 사용하면 안 되는 곳
- 비밀번호 해싱 — 무지개 표(rainbow table)로 즉시 깨짐. 반드시 bcrypt·scrypt·Argon2(KDF, 서버 측)
- 디지털 서명 — 충돌 공격으로 위변조 가능. SHA-256 + RSA/ECDSA
- SSL/TLS 인증서 — CA Browser Forum 표준 SHA-256 이상 (모든 브라우저 SHA-1 인증서 차단)
- JWT 서명 — 최소 HMAC-SHA256 (HS256). HS1은 부적합
- 코드 사이닝·소프트웨어 배포 — Microsoft·Apple 모두 SHA-256 이상 의무화
📅 알려진 충돌 공격: MD5 (2004, Wang et al.), SHA-1 SHAttered (2017.02 Google·CWI), SHA-1 chosen-prefix (2020.01)
✅ MD5 · SHA-1을 사용해도 되는 곳 (무결성 전용)
- 파일 체크섬 — Linux ISO·소프트웨어 다운로드 무결성 (충돌 위험 ↔ 손상 검출은 OK)
- 중복 파일 검출 — 같은 콘텐츠 빠르게 식별 (deduplication)
- 캐시 키·CDN 무효화 — 콘텐츠 변경 감지용 식별자
- Git 커밋 ID — Git이 SHA-1 사용 (점진적 SHA-256 전환 중)
- 레거시 시스템 호환성 — 외부 시스템이 MD5/SHA-1만 지원할 때
🔑 HMAC 사용 시나리오 — 웹훅·API·JWT
HMAC은 비밀키 + 메시지를 합쳐 만드는 메시지 인증 코드(MAC)입니다. 단순 해시와 달리 키를 모르면 위조 불가능해 API 인증·웹훅 검증에 표준으로 쓰입니다.
| 서비스 | 알고리즘 · 형식 | 전송 위치 |
|---|---|---|
| 🐙 GitHub Webhook | HMAC-SHA256, hex | X-Hub-Signature-256 헤더 |
| 💬 Slack Signing | HMAC-SHA256, hex | X-Slack-Signature 헤더 |
| ☁️ AWS Sig V4 | HMAC-SHA256, hex | Authorization 헤더 (4단계 KDF) |
| 🎫 JWT HS256 | HMAC-SHA256, Base64URL | JWT 토큰 마지막 부분 |
| 🎫 JWT HS512 | HMAC-SHA512, Base64URL | JWT 토큰 마지막 부분 |
| 💸 결제 PG (PayPal·Stripe) | HMAC-SHA256, hex | PAYPAL-TRANSMISSION-SIG 등 |
ⓘ HMAC-SHA256이 사실상 현대 표준입니다. 본 도구의 [🔑 HMAC] 탭에서 시나리오 카드를 클릭하면 알고리즘·형식이 자동 설정됩니다.
📥 파일 무결성 검증 가이드 (CLI 비교)
ISO·설치 파일을 다운로드 후 무결성을 확인하는 표준 절차입니다. 본 도구의 결과는 아래 CLI 명령과 정확히 동일합니다.
| 알고리즘 | macOS / Linux | Windows |
|---|---|---|
| MD5 | md5sum file (Linux) / md5 file (macOS) | certutil -hashfile FILE MD5 |
| SHA-1 | shasum -a 1 file | certutil -hashfile FILE SHA1 |
| SHA-256 | shasum -a 256 file | certutil -hashfile FILE SHA256 |
| SHA-512 | shasum -a 512 file | certutil -hashfile FILE SHA512 |
💡 본 도구의 [📁 파일] 탭에 파일을 드래그하고 공식 사이트가 제공한 SHA256SUMS 값을 "예상 해시"에 붙여넣으면 자동으로 ✅/❌ 비교됩니다.
자주 묻는 질문 (FAQ)
Q1. MD5는 안전한가요?
아니요. 보안 용도로는 절대 안 됩니다. 2004년 Wang 등이 MD5 충돌 공격을 발표한 이후 비밀번호 해싱·디지털 서명·SSL 인증서 등 보안 용도로 사용이 금지됐습니다. 단, 파일 무결성(체크섬)·중복 검출·캐시 키 등 비보안 용도로는 여전히 사용 가능합니다. 비밀번호는 반드시 bcrypt·scrypt·Argon2 같은 KDF를 서버 측에서 사용해야 합니다.
Q2. SHA-1은 사용해도 되나요?
보안 목적으로는 사용 금지입니다. 2017년 Google이 SHAttered 공격으로 SHA-1 충돌을 시연했고, 2020년에는 더 강력한 chosen-prefix 충돌까지 가능해졌습니다. 모든 주요 브라우저(Chrome·Firefox·Safari·Edge)가 SHA-1 SSL 인증서를 차단합니다.
예외: Git 커밋 ID(점진적 SHA-256 전환 중), 레거시 호환, HMAC-SHA1(키가 비밀이면 충돌 공격 무관) 정도만 허용.
Q3. 비밀번호를 SHA-256으로 해싱하면 안 되나요?
안 됩니다. SHA 계열 단순 해싱은 비밀번호에 부적합합니다.
이유: ① 너무 빠름 → GPU로 초당 수십억 시도 가능 → 무지개 표·brute force에 취약. ② 솔트 자동 처리 X → 같은 비밀번호는 같은 해시 → 사용자 간 공유 비밀번호 노출.
올바른 비밀번호 해싱:
• bcrypt — 가장 널리 쓰임 (BCrypt.NET, password_hash() in PHP)
• scrypt — 메모리도 많이 씀 (ASIC 저항)
• Argon2 — 2015 PHC 우승, 현 권장 표준 (Argon2id)
모두 서버 측에서 처리해야 하며, 클라이언트(브라우저)에서 비밀번호 해싱은 의미 없습니다 (서버는 해시도 비밀로 받아야 함).
Q4. HMAC과 일반 해시의 차이는?
HMAC(Hash-based MAC)은 비밀키 + 메시지를 함께 해싱해 생성하는 메시지 인증 코드입니다.
• 일반 해시 (SHA-256 등): 누구나 메시지만 알면 같은 해시 생성 가능 → 위조 가능
• HMAC-SHA256: 키를 모르면 같은 해시 생성 불가능 → 메시지 위변조 검출 가능
공식: HMAC(key, msg) = H((key⊕opad) ‖ H((key⊕ipad) ‖ msg)) (RFC 2104)
GitHub 웹훅, Slack, AWS Signature V4, JWT HS256 모두 HMAC-SHA256 사용. 본 도구의 [🔑 HMAC] 탭에서 4개 시나리오 프리셋 제공.
Q5. 파일 해시가 다른 사이트와 다른 값이 나와요
가장 흔한 원인은 줄바꿈(newline) 차이입니다. Windows(CRLF)와 macOS/Linux(LF)는 같은 텍스트 파일이라도 바이트가 달라 해시가 달라집니다.
그 외 원인: ① 파일이 다운로드 중 손상, ② 메타데이터·BOM 포함 여부, ③ ZIP 압축 해제 시 시간 정보 변경, ④ 다른 알고리즘으로 계산
확인 방법: 같은 OS에서 같은 알고리즘으로 다시 계산해 보세요. 본 도구의 결과는 macOS/Linux의 shasum·md5sum과 100% 일치합니다 (UTF-8 기준).
Q6. 큰 파일도 해시 가능한가요?
가능합니다. 본 도구는 최대 1~2GB까지 브라우저 메모리 한도 내에서 처리 가능 (기기 RAM 의존).
• SHA-1/256/512: Web Crypto API로 한 번에 계산 — 빠름
• MD5: 8MB 청크 단위 스트리밍 처리 (RFC 1321 inline 구현) — 느리지만 매우 큰 파일도 가능
100MB 초과 시 메모리 사용량·시간 경고가 표시됩니다. 수 GB 파일은 CLI(`shasum -a 256 file.iso`) 사용을 권장합니다.
Q7. SRI 해시(integrity)는 어떻게 만드나요?
SRI(Subresource Integrity)는 CDN에서 로드되는 외부 스크립트가 변조되지 않았는지 검증하는 W3C 표준입니다.
생성 방법: 본 도구의 [📝 텍스트] 또는 [📁 파일] 탭에서 SHA-384 + Base64 출력을 사용 (또는 SHA-256/512).
HTML 사용:<script src="..." integrity="sha384-Base64결과" crossorigin="anonymous"></script>jsDelivr·cdnjs는 자동 생성 SRI를 제공합니다. 자체 호스팅 시 본 도구로 생성 가능.
Q8. Base64와 hex 형식 어떻게 선택?
hex (16진): 일반적·가독성 ↑·길이 2배. 대부분 CLI·로그·검증용 표준.
Base64: 짧음(약 33% 압축)·HTTP 헤더·이메일 친화. SRI integrity= 속성, JWT 등에 사용.
Base64URL: +→-, /→_, 패딩(=) 제거. URL·파일명·JWT(헤더·페이로드·서명)에 안전.
용도별 권장:
• 파일 체크섬·CLI 비교 → hex
• SRI integrity 속성 → Base64 (또는 Base64URL)
• JWT 서명 → Base64URL (RFC 7515)
• API 헤더 (대부분 GitHub/Slack 등) → hex
Q9. 본 도구는 입력 데이터를 서버에 보내나요?
아니요. 모든 계산이 브라우저(클라이언트)에서 수행됩니다.
• MD5: 순수 JavaScript로 inline 구현 (외부 라이브러리·서버 호출 없음)
• SHA-1/256/512: 브라우저 Web Crypto API (네이티브)
• HMAC: Web Crypto API
• 파일: FileReader로 메모리 내 처리, 업로드 없음
또한 입력 텍스트·Secret Key·파일은 localStorage에도 저장하지 않습니다 (옵션값만 저장). 공용 PC 사용 후 브라우저 탭을 닫으면 모든 데이터가 즉시 사라집니다. 추가 안전을 원하면 시크릿 모드·DevTools로 메모리 정리 권장.
Q10. 해시 충돌(collision)이란 무엇인가요?
서로 다른 두 입력이 같은 해시값을 만드는 현상입니다. 해시 함수는 입력은 무한·출력은 유한이라 이론적으로 충돌은 항상 존재해요.
안전한 해시는 찾기가 사실상 불가능해야 합니다(비둘기 집 원리 + 출력 공간이 매우 큼).
• MD5 충돌 (2004): 약 2^18 시도로 충돌 가능 → 디지털 서명 위조 가능
• SHA-1 SHAttered (2017): Google이 100시간 GPU 작업으로 같은 SHA-1 두 PDF 시연
• SHA-256: 2^128 시도 필요 → 우주 수명보다 긺 → 안전
충돌 위험이 있어도 무결성 확인(체크섬)은 OK — 우연한 손상은 충돌과 무관, 의도적 변조 위험만 문제.