#️⃣ 해시 생성기
텍스트를 입력하거나 파일을 끌어다 놓으면 MD5·SHA-1·SHA-256·SHA-384·SHA-512를 바로 계산해요. 파일은 업로드되지 않고 브라우저 안에서만 읽어요.
사용법
- 텍스트를 입력하면 입력하는 즉시 다섯 가지 해시가 계산돼요. 한글·이모지는 UTF-8 바이트로 바꿔서 계산하니 리눅스
sha256sum, 파이썬hashlib과 같은 값이 나와요. - 파일을 확인하려면 파일을 고르고 끌어다 놓으세요. 파일은 서버로 올라가지 않고 브라우저 메모리에서만 읽어요.
- 출력 형식에서 hex 소문자·대문자·Base64를 바꿀 수 있어요. 값은 그대로이고 표기만 달라져요.
- API 서명처럼 비밀 키가 필요한 경우 HMAC을 켜고 키를 넣으세요. 모든 알고리즘이 HMAC-MD5, HMAC-SHA256 … 으로 바뀌어요.
- 내려받은 프로그램의 공식 해시가 있다면 checksum 칸에 붙여넣으세요. 다섯 결과 중 일치하는 줄이 강조되고 "일치해요"가 떠요.
해시 함수란?
해시 함수는 길이에 상관없이 어떤 데이터든 정해진 길이의 지문으로 바꾸는 함수예요. 같은 입력은 언제나 같은 값이 나오고, 한 글자만 바뀌어도 결과가 완전히 달라져요(눈사태 효과). 결과에서 원문을 되돌릴 수 없어서 암호화가 아니라 단방향 요약이라고 불러요. 그래서 파일이 중간에 바뀌지 않았는지 확인하는 체크섬, 데이터 중복 확인, Git 커밋 ID, 전자서명의 재료로 쓰여요.
| 알고리즘 | 길이 | hex 글자 수 | 보안 상태 | 주로 쓰는 곳 |
|---|---|---|---|---|
| MD5 | 128비트 | 32자 | 충돌 공격 가능 (보안용 X) | 단순 무결성 확인, 캐시 키, ETag |
| SHA-1 | 160비트 | 40자 | 충돌 실증됨 (2017, SHAttered) | 옛 Git 커밋 ID, 레거시 시스템 |
| SHA-256 | 256비트 | 64자 | 안전 | 파일 체크섬, TLS 인증서, 비트코인, JWT(HS256) |
| SHA-384 | 384비트 | 96자 | 안전 | TLS, SRI(<script integrity>) |
| SHA-512 | 512비트 | 128자 | 안전 | 리눅스 배포판 체크섬, 64비트 CPU에서 빠름 |
체크섬으로 다운로드 파일 검증하기
리눅스 ISO나 오픈소스 프로그램 배포 페이지에는 보통 SHA256SUMS 같은 해시가 함께 적혀 있어요. 내려받은 파일을 이 도구에 넣고 공식 해시를 checksum 칸에 붙여넣어 일치하면, 전송 중 손상되거나 누군가 바꿔치기하지 않았다는 뜻이에요. 터미널을 쓴다면 아래 명령과 같은 결과예요.
| 운영체제 | SHA-256 명령 | MD5 명령 |
|---|---|---|
| Windows (cmd) | certutil -hashfile 파일 SHA256 | certutil -hashfile 파일 MD5 |
| Windows (PowerShell) | Get-FileHash 파일 | Get-FileHash 파일 -Algorithm MD5 |
| macOS | shasum -a 256 파일 | md5 파일 |
| Linux | sha256sum 파일 | md5sum 파일 |
텍스트 해시가 터미널과 다르게 나온다면 대부분 줄바꿈 때문이에요. echo "hello" | sha256sum은 끝에 줄바꿈(\n)까지 넣어 계산해요. 이 도구와 같게 하려면 echo -n "hello"를 쓰세요. "hello"의 SHA-256은 2cf24dba…9824, 줄바꿈이 붙으면 5891b5b5…be03으로 완전히 달라져요.
HMAC이란?
HMAC(Hash-based Message Authentication Code)은 해시에 비밀 키를 섞어 "이 메시지를 키를 아는 사람이 만들었다"를 증명하는 방식이에요. 결제·웹훅 API(토스페이먼츠, Stripe, GitHub Webhook 등)가 요청 본문에 HMAC-SHA256 서명을 붙여 보내고, 받는 쪽은 같은 키로 다시 계산해 비교해요. 키가 다르면 결과가 전혀 달라서 키 없이 서명을 위조할 수 없어요. 계산식은 H((K ⊕ opad) ‖ H((K ⊕ ipad) ‖ 메시지))이에요.
계산 방식
- SHA-1·SHA-2 — 브라우저에 내장된 Web Crypto API(
crypto.subtle.digest, HMAC은crypto.subtle.sign)를 써요. 보안 연결(https)에서만 동작해요. - MD5 — Web Crypto가 MD5를 지원하지 않아 RFC 1321 알고리즘을 자바스크립트로 직접 구현했어요. 빈 문자열은
d41d8cd98f00b204e9800998ecf8427e, "abc"는900150983cd24fb0d6963f7d28e17f72로 표준 테스트 값과 같아요.
비밀번호를 저장할 때는 MD5나 SHA-256을 그대로 쓰면 안 돼요. 너무 빨라서 무차별 대입에 약하니 bcrypt·scrypt·Argon2처럼 일부러 느리게 만든 함수를 쓰세요. 이 페이지의 모든 계산은 브라우저 안에서만 이뤄지고, 입력한 텍스트·파일·키는 어디에도 전송되거나 저장되지 않아요.