·3분 읽기
MD5 vs SHA-256 - 어떤 해시를 써야 할까 (보안·속도 비교)
MD5와 SHA-256의 차이를 보안·속도·용도별로 정리했어요. 비밀번호·파일 검증·디지털 서명에 어떤 해시가 적절한지 결정 가이드.

#️⃣
해시 생성기 바로 사용하기
SHA-1, SHA-256, SHA-512 해시를 생성하세요
→
MD5와 SHA-256 핵심 차이
**MD5 (Message Digest 5)**
- 출력: 128비트 (16바이트, 32 헥사 문자)
- 발표: 1992년
- 속도: 매우 빠름 (CPU 5GB/초)
- 보안: ❌ 깨짐 (2004년 충돌 발견)
- 용도: 단순 무결성 체크 (보안 X)
**SHA-256 (Secure Hash Algorithm 256)**
- 출력: 256비트 (32바이트, 64 헥사 문자)
- 발표: 2001년
- 속도: 빠름 (CPU 1.5GB/초, MD5의 1/3)
- 보안: ✅ 안전 (충돌 미발견)
- 용도: 보안 + 무결성 모두
**길이 차이 시각화**
```
MD5: 5d41402abc4b2a76b9719d911017c592
SHA-256: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
```
**핵심 결론**
- 보안 필요 → SHA-256
- 보안 무관·속도 우선 → MD5 OK
- 비밀번호 → 둘 다 X (bcrypt·argon2 사용)
보안 차이 — 충돌·역산
**MD5의 약점**
**1. 충돌 (Collision) 공격 가능**
다른 두 입력이 같은 MD5 해시를 만들 수 있음.
```
입력 A: "Hello" → 8b1a9953c4611296a827abf8c47804d7
입력 B: 조작된 바이너리 → 8b1a9953c4611296a827abf8c47804d7
```
2004년 발견, 현재 노트북으로 분 단위 가능.
**2. 사전 공격 (Preimage Attack)**
- MD5 해시 → 원본 추정 가능 (특정 조건)
- 짧은 비밀번호는 무지개 테이블로 즉시 깨짐
**SHA-256의 강점**
**1. 충돌 발견 안 됨**
- 이론상 2^128 시도 필요 — 현실 불가능
- Bitcoin·HTTPS 등 핵심 시스템 사용
**2. 사전 공격 어려움**
- 256비트 출력 → 2^256 가능성
- 무차별 대입 시간 우주 나이 초과
**실전 영향**
- 디지털 서명: MD5 ❌ → SHA-256 필수
- SSL/TLS 인증서: SHA-256 표준
- Bitcoin: SHA-256 사용
- 정부·금융: SHA-256 의무
용도별 어떤 걸 써야 하나
**1. 비밀번호 저장**
- ❌ MD5: 깨지기 너무 쉬움
- ❌ SHA-256: 너무 빠름 (무차별 대입 가능)
- ✅ bcrypt: 의도적 느림 (적정 보안)
- ✅ argon2: 최신 표준
- ✅ scrypt: 메모리 기반
**2. 파일 무결성 (다운로드 검증)**
- ⚠️ MD5: 일반 파일 OK (악의적 변조 위험 시 X)
- ✅ SHA-256: 표준 권장
- ✅ SHA-3: 차세대
**3. 디지털 서명·인증서**
- ❌ MD5: 절대 X (충돌 공격)
- ✅ SHA-256: 현재 표준
- ✅ SHA-3: 미래 대비
**4. 데이터베이스 인덱스**
- ✅ MD5: 빠르고 충돌 거의 없음
- ⚠️ SHA-256: 가능하지만 길이 증가 → 인덱스 크기↑
**5. 캐시 키·중복 검사**
- ✅ MD5: 충분 (속도 우선)
- ✅ SHA-256: 더 안전하지만 오버킬
**6. 블록체인·암호화폐**
- ❌ MD5: 보안 핵심 분야 절대 X
- ✅ SHA-256: Bitcoin 표준
- ✅ Keccak-256: Ethereum
Toolkio 해시 + 실전 가이드
**Toolkio 해시 생성기**
- MD5·SHA-1·SHA-256·SHA-512 모두 지원
- 텍스트·파일 입력
- 결과 즉시 복사
- 무료·무제한
**실전 활용 5가지**
1. **다운로드 파일 무결성 검증**
- 공식 사이트 SHA-256 비교
- 변조·손상 확인
2. **데이터 중복 검사**
- 큰 파일 같은지 빠르게 확인
- MD5로 충분 (속도 우선)
3. **Git 커밋 해시**
- SHA-1 사용 (이력만 추적, 보안 X)
4. **블록체인 트랜잭션**
- SHA-256 표준
5. **API 서명**
- HMAC-SHA-256 표준
**명령줄 도구**
```bash
# Linux/Mac
md5sum file.zip
sha256sum file.zip
# Windows PowerShell
Get-FileHash file.zip -Algorithm MD5
Get-FileHash file.zip -Algorithm SHA256
```
**자주 하는 실수**
- MD5로 비밀번호 저장 → 즉시 깨짐
- SHA-256으로 비밀번호 → 무차별 대입에 약함
- HTTPS 없이 해시 전송 → 중간자 공격
- 솔트 (Salt) 없이 해시 → 무지개 테이블 깨짐
**결론**
- 일반 무결성: MD5 또는 SHA-256
- 보안 필요: SHA-256 무조건
- 비밀번호: bcrypt·argon2 (해시 함수 X)