MD5, SHA-256, SHA-512 해시 생성 방법
빠른 요약
해시의 개념, MD5·SHA-1·SHA-256·SHA-512의 차이, 체크섬·Git·비밀번호 등 용도별 선택 기준과 MD5가 취약한 이유를 알아보세요.
해시는 임의 길이의 입력을 고정 길이의 고유한 지문으로 변환하는 단방향 함수입니다. 같은 입력은 항상 같은 해시를, 다른 입력은 사실상 다른 해시를 생성합니다. NeatForge 해시 생성기 는 MD5, SHA-1, SHA-256, SHA-384, SHA-512를 한 번에 브라우저에서 계산합니다.
해시란 무엇인가요?
해시 함수는 입력(메시지)을 받아 고정 길이의 문자열인 해시값을 반환합니다. 핵심 성질은 다음과 같습니다.
- 단방향 — 해시에서 원본을 복구할 수 없습니다.
- 결정론적 — 같은 입력은 항상 같은 해시를 냅니다.
- 고유성 — 다른 입력은 (충돌이 없는 한) 다른 해시를 냅니다.
- 눈사태 효과 — 입력 한 글자만 바꿔도 해시가 완전히 달라집니다.
해싱은 암호화와 다릅니다. 암호화는 키로 복호화할 수 있지만 해시는 복호화가 불가능합니다.
MD5, SHA-1, SHA-256, SHA-512의 차이는?
- MD5 — 128비트 출력, 손상됨(레거시 전용).
- SHA-1 — 160비트 출력, 손상됨(레거시 전용).
- SHA-256 — 256비트 출력, 안전(권장).
- SHA-384 — 384비트 출력, 안전.
- SHA-512 — 512비트 출력, 안전(권장).
출력이 길수록 충돌 가능성이 낮아지며, 현대 보안 용도에는 SHA-256 이상을 사용하세요.
용도별로 어떤 알고리즘을 선택해야 하나요?
- 체크섬(데이터 무결성) — SHA-256. MD5는 빠르지만 충돌이 보고되어 보안 용도에 부적합합니다.
- Git 스타일 콘텐츠 주소 지정 — SHA-1(역사적 이유) 또는 SHA-256(Git의 새 기본).
- 비밀번호 저장 — SHA 단독 사용 금지. bcrypt, scrypt, Argon2 같은 키 파생 함수를 사용하세요.
- 디지털 서명 — SHA-256 또는 SHA-512.
- 레거시 시스템 통합 — 일부 오래된 API가 MD5/SHA-1을 요구하면 호환용으로만 사용하세요.
MD5는 왜 취약한가요?
MD5는 1990년대에 설계되었으며, 2000년대에 실용적인 충돌 공격이 발견되었습니다. 공격자는 같은 MD5 해시를 갖는 두 개의 다른 입력을 만들어낼 수 있어 디지털 서명과 인증서 용도로는 더 이상 안전하지 않습니다. 비밀번호 저장에 절대 사용하지 마세요.
충돌이란 무엇인가요?
충돌은 서로 다른 두 입력이 같은 해시를 만드는 상황입니다. 모든 해시 함수는 고정 길이 출력이므로 입력이 무한하면 충돌이 수학적으로 불가피합니다(비둘기집 원리). 다만 강한 알고리즘은 충돌을 찾는 데 현실적으로 불가능한 연산량을 요구합니다.
- MD5 — 충돌이 몇 초 만에 생성 가능(취약).
- SHA-1 — 2017년 Google이 실제 충돌을 공개(SHAttered).
- SHA-256/SHA-512 — 현재 실용적인 충돌 공격 없음.
이것이 보안 용도에 SHA-256 이상을 사용해야 하는 핵심 이유입니다.
해시는 어떻게 생성하나요?
- 해시 생성기 를 엽니다.
- 해시할 텍스트를 입력 상자에 붙여넣습니다.
- 해시 계산을 클릭하여 5개 해시를 한 번에 생성합니다.
- 대소문자 토글로 hex 출력 형식을 맞춥니다.
- 필요한 해시 옆의 복사 버튼을 눌러 클립보드에 복사합니다.
SHA 해시는 브라우저의 네이티브 Web Crypto API(crypto.subtle.digest)로 계산되어 빠르고 암호학적으로 안전합니다. 모든 처리는 브라우저에서 이루어지며 입력 텍스트는 업로드되지 않습니다.
자주 묻는 질문
MD5는 여전히 안전한가요? 아니요. MD5는 암호학적으로 손상되어 비밀번호 저장, 디지털 서명, 보안 용도에 사용해서는 안 됩니다. 레거시 체크섬 검증에만 제한적으로 사용하세요.
해싱과 암호화의 차이는 무엇인가요? 해싱은 단방향이라 원본을 복구할 수 없고, 암호화는 키로 복호화할 수 있습니다. 무결성 검사에는 해시, 기밀성에는 암호화를 사용하세요.
파일을 해시할 수 있나요? 이 도구는 텍스트만 해시하며, 입력은 UTF-8로 인코딩되어 이모지와 국제 문자에서도 올바르게 작동합니다.