·2분 읽기
해시 생성기 활용 — MD5·SHA-256 차이와 비밀번호 저장 보안 가이드
MD5·SHA-1·SHA-256·bcrypt 차이와 비밀번호 저장 시 안전한 해시 선택 기준을 5가지 실전 시나리오로 정리했어요.

#️⃣
해시 생성기 바로 사용하기
SHA-1, SHA-256, SHA-512 해시를 생성하세요
→
해시 함수란?
해시 함수는 어떤 길이의 입력을 받아 고정 길이의 출력으로 변환하는 일방향 함수예요. 같은 입력은 항상 같은 해시값. 단, 해시값으로는 원본 복원 불가.
예) 'hello' → MD5 → '5d41402abc4b2a76b9719d911017c592'
비밀번호 저장·파일 무결성 검증·전자 서명 등에 광범위하게 쓰여요. 다만 알고리즘 선택을 잘못하면 보안 사고 직결되니 용도별 올바른 알고리즘 선택이 핵심이에요.
주요 해시 알고리즘 비교
용도별 적합 알고리즘이 달라요.
| 알고리즘 | 길이 | 속도 | 보안 | 용도 |
|----------|------|------|------|------|
| MD5 | 128bit | 빠름 | ❌ 깨짐 | 체크섬만 |
| SHA-1 | 160bit | 빠름 | ❌ 깨짐 | 레거시 호환 |
| SHA-256 | 256bit | 빠름 | ✅ 안전 | 디지털 서명·블록체인 |
| SHA-512 | 512bit | 빠름 | ✅ 안전 | 군사·금융 |
| bcrypt | 가변 | 느림 | ✅ 안전 | 비밀번호 |
| Argon2 | 가변 | 느림 | ✅ 최강 | 비밀번호(2026년 권장) |
MD5·SHA-1은 충돌 발견됐으니 보안 용도 절대 금지예요.
시나리오 1) 비밀번호 저장 — bcrypt가 정답
사용자 비밀번호는 절대 평문 저장 금지. SHA-256도 불충분.
이유: SHA-256은 너무 빨라서 GPU로 초당 100억 개 시도 가능. 짧은 비밀번호는 1초 안에 깨져요.
bcrypt·Argon2는 의도적으로 느리게 만든 알고리즘(0.1~1초). 같은 GPU도 초당 100~1,000개만 시도 가능. 깨는 데 수년 필요.
```
# bcrypt 예시
$2b$12$EXRkfkdmXn2gzds2SSitu.MW9.gAVqa9eLS1//RYtYCmB1eLHg.9q
```
시나리오 2) 파일 무결성 검증
다운로드한 파일이 변조되지 않았는지 확인할 때 SHA-256 사용.
```
공식 사이트: SHA-256 = abc123...
다운받은 파일: SHA-256 = abc123...
→ 일치 → 무결성 OK
```
Linux 배포판·오픈소스 소프트웨어 다운로드 시 거의 표준 절차. MD5도 가능하지만 충돌 위험 때문에 SHA-256 권장이에요.
시나리오 3) API 인증 — HMAC
API 요청 위변조 방지를 위해 HMAC-SHA256 사용.
```
signature = HMAC-SHA256(secret_key, request_body)
```
클라이언트와 서버가 공유하는 비밀키로 서명 생성. 요청 변조 시 서명 불일치로 거부. AWS·Stripe 등 대부분의 API가 이 방식이에요.
시나리오 4) 블록체인 트랜잭션
비트코인·이더리움은 SHA-256(이더리움은 Keccak-256)으로 트랜잭션 해시 생성. 한 글자만 바뀌어도 해시값이 완전히 달라지는 특성으로 변조 즉시 감지.
블록체인의 무결성·신뢰성의 근간이 해시 함수예요.
시나리오 5) 캐시 키·CDN 버전 관리
정적 파일(JS·CSS·이미지)에 해시 추가해서 캐시 무효화.
```
app.js → app.a1b2c3.js
```
파일 내용 바뀌면 해시도 바뀌어 브라우저가 새로 다운로드. 내용 같으면 캐시 활용. webpack·Vite 등 모든 번들러가 사용하는 표준 패턴이에요.
Toolkio 해시 생성기 사용법
1. 텍스트 입력 또는 파일 업로드
2. MD5·SHA-1·SHA-256·SHA-512 동시 생성
3. 결과값 클릭으로 복사
4. 대용량 파일도 브라우저 안에서 처리
Web Crypto API 사용하니까 입력값이 외부 서버로 전송되지 않아요. 비밀번호·민감 데이터도 안전하게 해싱 가능.