해시 생성기 — MD5, SHA-256, SHA-512
브라우저에서 암호화 해시를 즉시 생성합니다. MD5, SHA-1, SHA-256, SHA-384, SHA-512를 지원합니다. 모든 처리는 100% 클라이언트 사이드 — 데이터가 브라우저를 떠나지 않습니다.
Web Crypto API와 로컬 MD5 구현을 사용합니다. 네트워크 요청 없음.
해시 생성
모든 알고리즘 한 번에
동일한 입력을 다섯 가지 알고리즘으로 동시에 해시합니다.
| MD5 | — | |
| SHA-1 | — | |
| SHA-256 | — | |
| SHA-384 | — | |
| SHA-512 | — |
해시 비교
두 해시 값을 붙여넣어 일치 여부를 확인합니다 — 파일 무결성 검사나 체크섬 비교에 유용합니다.
해시 함수란?
해시 함수는 임의 길이의 입력을 해시, 다이제스트 또는 체크섬이라 불리는 고정 길이 출력으로 변환하는 수학적 알고리즘입니다. 해시 함수는 현대 암호학의 기초이며 디지털 서명, 인증서 검증, 비밀번호 저장, 데이터 무결성 검사, 콘텐츠 주소 지정에 사용됩니다.
암호학적 해시 함수를 정의하는 세 가지 속성: 결정성(동일한 입력은 항상 동일한 출력 생성), 눈사태 효과(입력의 작은 변경이 출력을 급격히 변경), 단방향성(해시에서 원본 입력을 역추적 불가). 안전한 해시 함수는 충돌 공격(동일한 해시를 생성하는 두 개의 다른 입력을 찾는 것)에도 저항합니다.
해시 알고리즘 비교
| 알고리즘 | 출력 길이 | 보안 상태 | 일반적인 사용 사례 |
|---|---|---|---|
MD5 |
128비트 (32자 hex) | 취약 | 체크섬, 캐시 키, 비보안 중복 제거 |
SHA-1 |
160비트 (40자 hex) | 사용 중단 | 레거시 시스템, Git 객체 ID (전환 중) |
SHA-256 |
256비트 (64자 hex) | 안전 | TLS 인증서, 코드 서명, Bitcoin, JWT |
SHA-384 |
384비트 (96자 hex) | 강력 | TLS 1.2+, 정부/규정 준수 요구 사항 |
SHA-512 |
512비트 (128자 hex) | 강력 | 고보안 애플리케이션, 디지털 포렌식, 보관 |
Web Crypto API로 JavaScript에서 해싱
최신 브라우저는 SHA 해시를 의존성 없이 완전히 클라이언트 사이드에서 계산하기 위한 crypto.subtle.digest() API를 제공합니다. 다음 예제는 SHA-256 해시를 계산하고 결과를 16진수 문자열로 변환합니다:
async function sha256(message) {
const encoder = new TextEncoder();
const data = encoder.encode(message);
const hashBuffer = await crypto.subtle.digest('SHA-256', data);
const hashArray = Array.from(new Uint8Array(hashBuffer));
return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
}
// 사용법
const hash = await sha256('hello world');
console.log(hash);
// => b94d27b9934d3e08a52e52d7da7dabfac484efe04294e576f4...
Web Crypto는 MD5를 암호학적으로 안전하지 않다고 판단하여 지원하지 않습니다. MD5의 경우 순수 JavaScript 구현이 대체로 사용됩니다.
자주 묻는 질문
해시 함수란 무엇입니까?
해시 함수는 입력(텍스트, 파일 또는 바이너리 데이터)을 받아 고정 길이의 문자열을 생성합니다. 동일한 입력은 항상 동일한 해시를 생성하지만 단일 문자 변경만으로도 완전히 다른 해시가 생성됩니다. 이러한 특성 덕분에 해시는 데이터 변경 탐지, 다운로드 검증, 원본 값을 저장하지 않고 비밀번호를 저장하는 데 유용합니다.
MD5와 SHA-256의 차이점은 무엇입니까?
MD5는 128비트(32자 16진수) 다이제스트를 생성하며 계산이 빠르지만 암호학적 충돌을 의도적으로 만들 수 있습니다 — 두 개의 다른 입력이 동일한 MD5 해시를 생성하도록 만들 수 있습니다. 이로 인해 MD5는 보안 목적으로 사용하기에 부적합합니다. SHA-256은 256비트 다이제스트를 생성하며 알려진 모든 공격에 안전합니다. 보안에 민감한 애플리케이션에는 SHA-256 또는 SHA-512를 사용하십시오. MD5는 캐시 키나 비핵심 체크섬과 같은 비보안 용도에만 사용 가능합니다.
해싱은 되돌릴 수 있습니까? 해시를 복호화할 수 있습니까?
아닙니다 — 해싱은 설계상 단방향 작업입니다. 해시에서 원본 입력을 복구할 수 있는 알고리즘은 없습니다. 그러나 짧거나 일반적인 입력은 무차별 대입이나 사전 계산된 레인보우 테이블을 통해 찾을 수 있습니다. 따라서 비밀번호는 SHA-256과 같은 빠른 알고리즘이 아닌 bcrypt나 Argon2와 같은 느리고 솔트를 사용하는 알고리즘으로 해시해야 합니다. 이 페이지의 해시 알고리즘은 데이터 무결성과 체크섬을 위해 설계되었으며 비밀번호 저장용이 아닙니다.
비밀번호 해싱에 SHA-256을 사용해야 합니까?
아닙니다. SHA-256과 기타 범용 해시 함수는 의도적으로 빠르게 설계되어 최신 하드웨어에서 무차별 대입 공격이 매우 쉽습니다(초당 수십억 번의 해시). 비밀번호에는 전용 느린 해싱 알고리즘을 사용하십시오: bcrypt(가장 널리 지원), Argon2id(현대 모범 사례, 비밀번호 해싱 대회 우승), scrypt. 이들은 계산 비용이 높도록 설계되었으며 레인보우 테이블 공격을 방어하기 위한 내장 솔팅을 포함합니다.
관련 개발자 도구
- Base64 인코더 & 디코더 — 브라우저에서 Base64 문자열을 즉시 인코딩 및 디코딩
- JWT 디코더 및 검사기 — JSON Web Token을 디코딩하고 클레임을 클라이언트 사이드에서 검사
- ENV 파일 검사기 — .env 파일을 검증하고 노출된 API 키와 시크릿 탐지
- URL 인코더 & 디코더 — URL 문자열과 쿼리 파라미터를 퍼센트 인코딩 및 디코딩