MD5, SHA-256 및 기타 해시를 생성하는 방법
해싱은 모든 입력 — 비밀번호, 파일, 메시지 — 을 고정 길이 문자열로 변환합니다. 동일한 입력은 항상 동일한 해시를 생성하지만 입력의 가장 작은 변경도 완전히 다른 해시를 생성합니다. 이는 무결성 검증, 비밀번호 저장 및 디지털 서명에 해싱을 필수적으로 만듭니다.
해싱 작동 방식
해시 함수는 모든 크기의 입력을 받아 고정 크기의 출력을 생성합니다:
| 입력 | SHA-256 해시(처음 16자) |
|---|---|
| hello | 2cf24dba5fb0a30e... |
| Hello | 185f8db32271fe25... |
| hello! | ce06092fb948d9ff... |
단일 문자가 변경되거나(소문자 h를 대문자 H로) 추가되면 해시가 완전히 변경되는 것을 보세요. 이를 눈사태 효과라고 합니다.
일반적인 해시 알고리즘
| 알고리즘 | 길이 | 상태 | 사용 용도 |
|---|---|---|---|
| MD5 | 32자 | 깨짐(안전하지 않음) | 레거시 체크섬, 비보안 사용 |
| SHA-1 | 40자 | 깨짐(안전하지 않음) | 레거시 시스템만 |
| SHA-256 | 64자 | 안전 | 파일 무결성, 디지털 서명 |
| SHA-512 | 128자 | 안전 | 고보안 응용 프로그램 |
SHA-256은 대부분의 용도에 대한 현재 표준입니다. MD5와 SHA-1은 이를 요구하는 레거시 시스템과 상호 작용할 때만 사용해야 합니다.
해시를 생성하는 방법
- 알고리즘 선택 — MD5, SHA-1, SHA-256, SHA-384 또는 SHA-512를 선택하세요. 특별한 이유가 없는 한 SHA-256을 사용하세요.
- 텍스트 입력 또는 파일 가져오기 — 텍스트를 입력하거나 붙여넣거나 해시할 파일을 선택하세요.
- 해시 복사 — 결과는 검증, 저장 또는 비교에 사용 가능한 16진수 문자열입니다.
실용적 사용
파일 무결성 검증 — 파일을 다운로드하고 그 해시를 공식적으로 게시된 해시와 비교하세요. 일치하면 파일이 진짜이고 손상되지 않은 것입니다.
비밀번호 저장 — 응용 프로그램은 비밀번호 자체가 아닌 비밀번호 해시를 저장합니다. 로그인할 때 입력이 해시되어 저장된 해시와 비교됩니다.
데이터 중복 제거 — 큰 파일을 해시하여 바이트 단위로 비교하지 않고 동일한지 빠르게 결정하세요.
API 보안용 HMAC — API 요청에 서명하고 전송 중에 변경되지 않았음을 보장하기 위해 HMAC(비밀 키가 있는 해시)를 사용하세요.
팁
- 기본적으로 SHA-256 사용 — 안전하고, 광범위하게 지원되며, 새 프로젝트의 표준 권장 사항입니다.
- 보안에 절대 MD5를 사용하지 마세요 — MD5 충돌(동일한 해시를 생성하는 다른 입력)은 몇 초 만에 생성될 수 있습니다. 비보안 체크섬에는 적합하지만 무결성이 중요한 곳에는 적합하지 않습니다.
- 비밀번호 해시에 솔트 추가 — 해싱 전에 각 비밀번호에 무작위 솔트를 추가하면 레인보우 테이블 공격을 방지할 수 있습니다. 프로덕션 비밀번호 해싱에는 bcrypt 또는 Argon2를 사용하세요.
- 파일 해싱은 로컬에서 작동 — 파일이 브라우저에서 처리되므로 큰 파일도 절대 기기를 떠나지 않습니다.
자주 묻는 질문
MD5, SHA-1, SHA-256의 차이점은 무엇입니까?
MD5는 128비트 해시(32 16진수 자)를 생성하고, SHA-1은 160비트(40자), SHA-256은 256비트(64자)를 생성합니다. MD5와 SHA-1은 암호학적으로 깨진 것으로 간주됩니다. SHA-256은 현재 안전하며 무결성 검증과 보안에 권장됩니다.
원본 데이터를 찾기 위해 해시를 역방향으로 변환할 수 있습니까?
아니요. 해시 함수는 설계상 단방향입니다. 수학적으로 해시를 입력으로 역방향으로 변환할 수 없습니다. 그러나 일반적인 비밀번호는 미리 계산된 테이블(레인보우 테이블)에서 발견될 수 있으므로 해싱 전에 비밀번호에 솔트를 추가하는 것이 중요합니다.
HMAC란 무엇입니까?
HMAC(Hash-based Message Authentication Code)는 해시 함수와 비밀 키를 결합합니다. 데이터의 무결성과 진위성을 모두 검증합니다 — 변경되지 않았으며 비밀 키를 알고 있는 사람이 생성했음을 증명합니다.
내 데이터가 서버로 전송됩니까?
아니요. 모든 해싱은 Web Crypto API를 사용하여 브라우저에서 실행됩니다. 텍스트와 파일이 기기를 떠나지 않습니다.