해시 생성기

MD5·SHA-1·SHA-256·SHA-512 동시 + HMAC 서명·파일 무결성·SRI 해시. 전부 브라우저 처리.

2026년 9월 기준 점검MD5 RFC 1321 · SHA-1/SHA-2 NIST FIPS 180-4 · HMAC RFC 2104 · SRI W3C 권고 · NIST SHA-1 퇴역 발표(2022.12)출처 NIST FIPS 180-4 (SHS)(새 창) ·NIST SHA-1 퇴역 발표(새 창) ·RFC 2104 (HMAC)(새 창) ·W3C Subresource Integrity(새 창)작성 리만 (Youtil 운영자)

MD5·SHA-1은 보안 용도에 쓰지 마세요
두 알고리즘은 충돌 공격이 실증돼 비밀번호 저장·디지털 서명·인증서에 쓸 수 없습니다. 파일 손상 확인(체크섬)처럼 비보안 용도로만 쓰고, 비밀번호는 서버에서 Argon2id·bcrypt·scrypt로 처리하세요. 모든 계산은 브라우저에서 이뤄지며 입력은 외부로 전송되지 않습니다. 분야별 안전 안내는 면책조항 참고.
글자수 0바이트 0줄 0
옵션
인코딩
출력
MD5128bit🟡 무결성 전용
입력 대기 중...

1992년 발표, 2004년 충돌 공격 발견. 빠르지만 보안 부적합.

SHA-1160bit🟡 무결성 전용
입력 대기 중...

1995년 발표, 2017년 SHAttered 충돌 시연. 디지털 서명 부적합.

SHA-256256bit🟢 안전 (권장)
입력 대기 중...

SHA-2 계열. 현재 가장 널리 쓰이는 안전한 해시. NIST 표준.

SHA-384384bit🟢 안전
입력 대기 중...

SHA-2 계열 384bit(SHA-512를 잘라 쓴 변형). SRI integrity 값에 가장 흔히 쓰임.

SHA-512512bit🟢 안전
입력 대기 중...

SHA-2 계열 512bit. 64bit 시스템에서 SHA-256보다 빠름.

가이드

알아두면 좋은 내용

리만 작성 · Youtil 운영자 소개
최종 업데이트 2026.09.26 · 읽는 시간 약 14분

어떻게 사용하나요?

  1. 텍스트 — 입력하는 즉시(200ms 디바운스) MD5·SHA-1·SHA-256·SHA-384·SHA-512 다섯 값을 동시에 보여 줍니다. 출력 형식(hex 소문자·대문자, Base64, Base64URL)과 인코딩(UTF-8·ASCII)을 고를 수 있습니다.
  2. 파일 — 끌어다 놓거나 선택하면 다섯 해시와 SRI 값을 계산합니다. 배포처가 공개한 체크섬을 ‘예상 해시’에 붙여넣으면 일치 여부를 바로 표시합니다.
  3. HMAC — 비밀키와 메시지로 HMAC-SHA1/256/384/512 서명을 만듭니다. 키는 텍스트·hex·Base64로 넣을 수 있고, GitHub·Slack·AWS·JWT 프리셋이 알고리즘과 출력 형식을 맞춰 줍니다.
  4. 가이드 — 알고리즘 비교, 안전성 등급, SRI 사용법, CLI 명령 대조표.

출력 형식·인코딩·HMAC 알고리즘 같은 옵션만 이 브라우저에 저장합니다. 입력 텍스트·비밀키·파일은 저장하지도, 서버로 보내지도 않습니다(MD5는 자체 JavaScript 구현, 나머지는 브라우저 내장 Web Crypto API).

해시 알고리즘 비교 — 출력 길이로 알고리즘 알아보기

해시는 입력 길이와 상관없이 항상 같은 길이로 나옵니다. 그래서 받은 체크섬이 어떤 알고리즘인지 모르면 글자 수로 먼저 가늠할 수 있습니다 — hex 32자면 MD5, 40자면 SHA-1, 64자면 SHA-256입니다. 본 도구의 파일 검증도 붙여넣은 값의 길이가 고른 알고리즘과 다르면 ‘변조’가 아니라 ‘알고리즘 불일치’로 따로 알려 줍니다.

알고리즘출력hexBase64Base64URL안전성주 용도
MD5128비트32자24자22자무결성 전용체크섬, 캐시 버스팅, 중복 검출
SHA-1160비트40자28자27자무결성 전용Git 커밋 ID, 레거시 호환, HMAC-SHA1
SHA-256256비트64자44자43자안전HTTPS, 블록체인, JWT, SRI, 디지털 서명
SHA-384384비트96자64자64자안전SRI(integrity), TLS, 고보안
SHA-512512비트128자88자86자안전고보안 디지털 서명, 금융, 정부 표준

길이는 본 도구의 알고리즘 정의에서 계산한 값입니다(Base64는 끝의 = 패딩 포함, Base64URL은 패딩 제외). SHA-384는 SHA-512를 다른 초깃값으로 계산해 앞 384비트만 쓰는 변형이라, 64비트 CPU에서 SHA-256보다 빠른 경우가 많습니다 — 다만 SHA 전용 명령어(SHA-NI 등)가 있는 최신 CPU에서는 SHA-256이 더 빠를 수 있습니다.

보이는 글자가 같아도 해시가 다른 이유 — 테스트 벡터

해시 함수는 글자가 아니라 바이트를 읽습니다. 아래 표는 본 도구의 텍스트 해시 함수로 직접 계산한 값으로, 줄바꿈 한 글자·보이지 않는 BOM·인코딩 모드만 달라도 결과가 완전히 바뀌는 것을 보여 줍니다(입력이 1비트만 바뀌어도 출력 비트의 약 절반이 바뀌는 ‘눈사태 효과’). 다른 도구와 값이 다를 때는 이 표의 경우부터 의심해 보세요.

입력실제 바이트 (hex)바이트 수SHA-256 앞 16자리포인트
빈 문자열(없음)0e3b0c44298fc1c14…입력이 비어도 해시는 나온다 — 파일 해시가 이 값이면 빈 파일이거나 읽기에 실패한 것
abc61 62 633ba7816bf8f01cfea…FIPS 180 예제 입력. 구현을 점검할 때 쓰는 기준값
abc + LF61 62 63 0a4edeaaff3f1774ad2…echo abc | sha256sum 의 결과. echo가 줄바꿈을 붙인다
abc + CRLF61 62 63 0d 0a5552bab6864c7a7b6…Windows 줄바꿈. 0D 한 바이트 차이로 완전히 다른 값
BOM + abcef bb bf 61 62 6361c28dc3f1f804a1a…“UTF-8 (BOM)”으로 저장한 파일. 앞에 EF BB BF가 붙는다
한글 (UTF-8)ed 95 9c ea b8 806bd87f9bb68b67d2f…한글 한 글자 = UTF-8 3바이트
한글 (ASCII 모드)3f 3f2e270aeb347f21655…ASCII 밖 문자가 모두 ?(3F)로 바뀌어 "??"와 같은 해시가 된다

검산용 기준값 — 텍스트 탭에 abc를 입력했을 때 SHA-256이 ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad, MD5가 900150983cd24fb0d6963f7d28e17f72이면 계산이 표준과 일치합니다. 터미널에서 같은 값을 얻으려면 printf abc | sha256sum처럼 줄바꿈 없이 넘겨야 합니다. EUC-KR(CP949)로 저장된 한글 파일은 한 글자가 2바이트라, 같은 문장을 UTF-8로 입력한 텍스트 탭 결과와 다릅니다 — 이럴 땐 파일 탭으로 원본 바이트를 그대로 해시하세요.

안전성 등급 — 무엇에 써도 되고 무엇에 쓰면 안 되나

기준은 ‘누군가 일부러같은 해시를 가진 다른 데이터를 만들 동기가 있느냐’입니다. 공격자가 끼어들 수 있는 곳이면 충돌 저항성이 필요하고, 우연한 손상만 걸러내면 되는 곳이면 MD5로도 충분합니다.

MD5·SHA-1을 쓰면 안 되는 곳
  • 비밀번호 저장 — 단순 해시는 SHA-256도 부적합. Argon2id·bcrypt·scrypt(서버)
  • 디지털 서명·코드 서명 — 충돌 쌍으로 서명을 다른 문서에 옮겨 붙일 수 있음. SHA-256 이상 + RSA/ECDSA
  • TLS 인증서 — 주요 브라우저가 SHA-1 서명 인증서를 신뢰하지 않음
  • JWT 서명 — JWS 표준 HMAC 알고리즘은 HS256·HS384·HS512뿐(HMAC-SHA1은 목록에 없음)
  • 파일 체크섬 — 다운로드 중 손상 여부 확인. 단, 체크섬 자체를 같은 서버에서 받는다면 변조까지는 막지 못하므로 배포처가 SHA-256과 서명(GPG 등)을 함께 제공하면 그쪽을 쓰세요.
  • 중복 파일 찾기·캐시 키 — 같은 내용을 빠르게 식별하는 용도. 충돌을 일부러 만들 사람이 없는 내부 데이터라면 MD5도 무방합니다.
  • Git 커밋 ID — SHA-1 기반(충돌 탐지 기능을 넣은 변형). Git은 SHA-256 저장소 형식을 도입해 전환 중입니다.
  • 레거시 연동 — 상대 시스템이 MD5·SHA-1만 받을 때. 새로 설계한다면 SHA-256 이상을 쓰세요.

알려진 충돌 공격: MD5 2004(Wang 외) · SHA-1 SHAttered 2017.02(Google·CWI) · SHA-1 chosen-prefix 2020.01. NIST는 2030년 12월 31일까지 SHA-1을 SHA-2·SHA-3로 교체하도록 권고합니다.

HMAC 서명 — 서비스별 형식과 검증할 때 틀리는 곳

HMAC은 비밀키와 메시지를 함께 해시해, 키를 가진 쪽만 올바른 값을 만들 수 있게 한 메시지 인증 코드입니다. 서비스마다 무엇을 서명하는지(본문만? 타임스탬프 포함?)가 달라서, 알고리즘을 맞춰도 서명 대상 문자열이 다르면 값이 일치하지 않습니다.

서비스알고리즘 · 형식전송 위치서명 대상
GitHub WebhookHMAC-SHA256 · hexX-Hub-Signature-256: sha256=…요청 본문 원문(raw body)
SlackHMAC-SHA256 · hexX-Slack-Signature: v0=…v0:{X-Slack-Request-Timestamp}:{본문}
Stripe WebhookHMAC-SHA256 · hexStripe-Signature: t=…,v1=…{t}.{본문}
AWS Signature V4HMAC-SHA256 · hexAuthorization 헤더비밀키 → 날짜 → 리전 → 서비스 → aws4_request 순으로 4번 HMAC해 만든 서명 키로 StringToSign 서명
JWT HS256·HS384·HS512HMAC-SHA256/384/512 · Base64URL토큰의 세 번째 부분Base64URL(헤더).Base64URL(페이로드)
  • 본문을 다시 직렬화하지 말 것 — 프레임워크가 JSON을 파싱한 뒤 다시 문자열로 만들면 공백·키 순서·유니코드 이스케이프가 바뀌어 서명이 틀어집니다. 받은 원문 바이트로 계산하세요.
  • 접두어·구분자 확인 — GitHub은 sha256=, Slack은 v0=이 헤더 값 앞에 붙습니다. 비교 전에 떼거나, 계산 결과에 같은 접두어를 붙이세요.
  • 상수 시간 비교 — 문자열 == 대신 Node의 crypto.timingSafeEqual, Python의 hmac.compare_digest를 쓰면 응답 시간 차이로 서명을 추측하는 공격을 막을 수 있습니다.
  • 타임스탬프 검사 — Slack·Stripe는 서명에 시각을 포함합니다. 몇 분(두 서비스 모두 5분을 권장·기본값으로 안내)보다 오래된 요청을 거절해야 재전송 공격을 막습니다.

직접 확인해 보기 — HMAC 탭에서 키 key, 메시지 The quick brown fox jumps over the lazy dog, HMAC-SHA256·hex를 고르면 f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8가 나와야 합니다(본 도구의 서명 함수로 빌드 때 계산한 값).

파일 무결성 검증 — CLI 명령 대조표

OS 설치 이미지나 설치 파일은 배포처가 SHA-256 값(SHA256SUMS 파일 등)을 함께 공개합니다. 내려받은 파일로 같은 값을 계산해 비교하면 손상 여부를 알 수 있습니다. 본 도구의 파일 탭 결과는 아래 명령의 출력과 같아야 합니다.

알고리즘LinuxmacOSWindows (cmd / PowerShell)
MD5md5sum FILEmd5 FILEcertutil -hashfile FILE MD5 / Get-FileHash FILE -Algorithm MD5
SHA-1sha1sum FILEshasum -a 1 FILEcertutil -hashfile FILE SHA1 / Get-FileHash FILE -Algorithm SHA1
SHA-256sha256sum FILEshasum -a 256 FILEcertutil -hashfile FILE SHA256 / Get-FileHash FILE
SHA-512sha512sum FILEshasum -a 512 FILEcertutil -hashfile FILE SHA512 / Get-FileHash FILE -Algorithm SHA512

PowerShell Get-FileHash는 알고리즘을 생략하면 SHA-256으로 계산하고 대문자 hex로 출력합니다. 본 도구의 ‘예상 해시’ 칸은 대소문자를 구분하지 않고,sha256sum 출력 한 줄(해시 + 파일명), BSD·macOS 형식(SHA256 (file) = …), 바이트 사이에 공백·콜론이 들어간 형식에서도 해시 부분만 골라 비교합니다. 여러 파일을 한 번에 확인할 때는 터미널의 sha256sum -c SHA256SUMS가 편합니다.

자주 묻는 질문

MD5는 안전한가요?
보안 용도로는 쓰면 안 됩니다. 2004년 왕샤오윈(Wang) 연구팀이 실제 충돌 쌍을 발표했고, 2008년에는 MD5 충돌로 가짜 인증기관(CA) 인증서를 만드는 시연이, 2012년에는 Flame 악성코드가 MD5 충돌로 Microsoft 코드 서명을 위조한 사례가 나왔습니다. 반면 우연한 손상 검출(체크섬)·중복 파일 찾기·캐시 키처럼 누군가 일부러 충돌을 만들 이유가 없는 곳에서는 지금도 씁니다. 비밀번호 저장에는 MD5든 SHA-256이든 단순 해시가 아니라 Argon2id·bcrypt·scrypt 같은 전용 함수를 서버에서 써야 합니다.
SHA-1은 사용해도 되나요?
새로 만드는 보안 기능에는 쓰지 마세요. 2017년 Google·CWI가 SHAttered로 같은 SHA-1 값을 가진 PDF 두 개를 만들었고, 2020년에는 앞부분을 공격자가 고를 수 있는 chosen-prefix 충돌까지 실용화됐습니다. 미국 NIST는 2022년 12월 SHA-1 퇴역을 발표하고 2030년 12월 31일까지 SHA-2·SHA-3로 교체하라고 권고했습니다. 주요 브라우저는 이미 SHA-1 서명 TLS 인증서를 신뢰하지 않습니다. 예외적으로 HMAC-SHA1은 충돌 공격의 영향을 직접 받지 않아 레거시 API에 남아 있고, Git 커밋 ID도 SHA-1 기반이지만 Git은 SHA-256 저장소 형식을 도입해 전환을 진행 중입니다.
비밀번호를 SHA-256으로 해싱하면 안 되나요?
안 됩니다. SHA-256은 빠르게 계산되도록 설계돼 GPU로 초당 수십억 번 대입할 수 있고, 솔트가 없으면 같은 비밀번호는 항상 같은 해시가 되어 미리 계산한 표(레인보 테이블)로 바로 역추적됩니다. 비밀번호 저장용으로는 일부러 느리고 메모리를 많이 쓰게 만든 Argon2id(2015년 Password Hashing Competition 우승작 Argon2의 권장 변형), scrypt, bcrypt를 서버에서 사용하세요. bcrypt·Argon2 라이브러리는 솔트를 자동 생성해 결과 문자열에 함께 담지만, scrypt는 Node crypto.scrypt·Python hashlib.scrypt처럼 솔트를 인자로 받는 API가 많아 무작위 솔트를 직접 만들어 해시와 함께 저장해야 합니다. 브라우저에서 해시해 서버로 보내는 방식은 그 해시값이 곧 비밀번호 역할을 하게 되므로 서버 측 처리를 대신하지 못합니다.
HMAC과 일반 해시의 차이는?
일반 해시(SHA-256)는 메시지만 있으면 누구나 같은 값을 만들 수 있어 변조자가 해시도 새로 계산해 붙이면 그만입니다. HMAC은 비밀키를 섞어 HMAC(K, m) = H((K ⊕ opad) ‖ H((K ⊕ ipad) ‖ m))(RFC 2104)으로 계산하므로 키를 모르면 올바른 값을 만들 수 없습니다. 그래서 웹훅·API 요청이 정말 상대방에게서 왔는지, 중간에 바뀌지 않았는지 확인하는 데 씁니다. GitHub·Slack·Stripe 웹훅, AWS Signature V4, JWT HS256이 모두 HMAC-SHA256을 씁니다. 본 도구의 HMAC 탭에는 이 중 4개 서비스의 알고리즘·출력 형식 프리셋이 있습니다.
같은 파일인데 다른 사이트·명령과 해시가 달라요
해시는 바이트 단위로 계산되므로, 보기엔 같아도 바이트가 1개만 달라도 전혀 다른 값이 나옵니다. 흔한 원인은 ① 줄바꿈 차이(Windows CRLF vs macOS·Linux LF), ② 파일 앞의 UTF-8 BOM(EF BB BF), ③ 인코딩 차이(EUC-KR로 저장한 한글은 UTF-8과 바이트가 다름), ④ echo가 끝에 붙이는 줄바꿈(echo -n 또는 printf로 비교), ⑤ 알고리즘을 잘못 고름, ⑥ 다운로드 중 손상입니다. 반대로 파일 이름·수정 시각 같은 메타데이터는 해시에 들어가지 않습니다 — 이름만 바꾼 파일은 해시가 같습니다. 본 도구의 파일 해시는 같은 파일에 대한 sha256sum·shasum·certutil 결과와 일치해야 정상입니다.
큰 파일도 해시할 수 있나요?
가능하지만 브라우저 메모리에 달려 있습니다. SHA 계열은 Web Crypto API가 스트리밍(조각 입력)을 지원하지 않아 파일 전체를 메모리에 올린 뒤 한 번에 계산하고, MD5는 자체 구현이라 8MB 조각으로 나눠 읽습니다. 100MB가 넘는 파일은 시간·메모리 경고를 표시합니다. 기기 메모리와 브라우저 한도에 따라 수 GB 파일은 실패할 수 있으니, OS 설치 이미지 같은 대용량은 sha256sum file.iso(Linux)·shasum -a 256 file.iso(macOS)·Get-FileHash file.iso(PowerShell)를 권장합니다.
SRI 해시(integrity)는 어떻게 만드나요?
SRI(Subresource Integrity)는 CDN에서 받아 오는 스크립트·스타일시트가 바뀌었으면 브라우저가 실행을 거부하게 하는 W3C 표준입니다. 값은 sha384- + 파일 바이트의 SHA-384를 표준 Base64로 인코딩한 문자열입니다. 파일 탭에 스크립트 파일을 넣으면 SRI 행에 그대로 나옵니다. 텍스트 탭에서 SHA-384 + Base64로 만들 수도 있지만, 붙여넣으면서 줄바꿈(CRLF→LF)이 바뀌면 실제 파일과 값이 달라지므로 파일 탭이 안전합니다. 사용할 때는 script·link 태그에 integrity="sha384-…"와 crossorigin="anonymous" 속성을 함께 추가합니다 — 다른 출처(CDN)의 파일은 CORS 응답 헤더가 있어야 검증이 되고, 없으면 로드 자체가 실패합니다.
hex와 Base64 중 무엇을 써야 하나요?
같은 해시를 다르게 적은 것뿐이라 보안 강도는 같습니다. hex는 바이트당 2글자(SHA-256 = 64자)로 CLI·체크섬 파일·대부분의 웹훅 헤더(GitHub·Slack·Stripe)가 씁니다. Base64는 3바이트를 4글자로 적어 hex보다 약 1/3 짧고(SHA-256 = 44자), SRI의 integrity 값이 이 형식입니다. Base64URL은 +→-, /→_로 바꾸고 끝의 =를 뺀 형태(SHA-256 = 43자)로 JWT 서명(RFC 7515)이 씁니다. 비교할 때는 형식부터 맞추세요 — hex 값과 Base64 값은 같은 해시여도 문자열로는 절대 일치하지 않습니다.
해시 충돌(collision)이란 무엇인가요?
서로 다른 두 입력이 같은 해시값을 내는 현상입니다. 출력 길이가 정해져 있으니 충돌은 이론상 반드시 존재하고, 안전한 해시란 그런 쌍을 찾는 데 드는 계산이 비현실적으로 큰 해시를 말합니다. 256비트 해시는 생일 공격 기준 약 2128번 계산이 필요해 현재 기술로 불가능합니다. MD5는 2013년 발표된 개선 공격 기준 약 218번 압축함수 계산이면 충돌 쌍을 만들 수 있고, SHA-1의 SHAttered는 약 263번(단일 GPU로 약 110년 분량)의 계산이 들었습니다. 충돌이 가능하다는 것은 누군가 의도적으로 두 파일을 만들어 바꿔치기할 수 있다는 뜻이지, 다운로드 중 우연히 손상된 파일이 원본과 같은 해시를 낼 수 있다는 뜻은 아닙니다.

참고 자료

  1. NIST FIPS 180-4 (SHS)(새 창)nvlpubs.nist.gov
  2. NIST SHA-1 퇴역 발표(새 창)nist.gov
  3. RFC 2104 (HMAC)(새 창)rfc-editor.org
  4. W3C Subresource Integrity(새 창)w3.org
이 계산기를 만든 사람 · 리만Youtil 운영자 · 혼자 만들고 운영하는 1인 서비스입니다
운영자 소개
계산 기준
MD5 RFC 1321 · SHA-1/SHA-2 NIST FIPS 180-4 · HMAC RFC 2104 · SRI W3C 권고 · NIST SHA-1 퇴역 발표(2022.12)
오류 제보
결과가 다르면 contact@youtil.kr로 입력 조건을 알려 주세요. 평일 기준 1~3일 안에 답변합니다.

함께 쓰면 좋은 계산기