해시 생성기
텍스트를 입력하거나 파일을 고르면 MD5, SHA-1, SHA-256, SHA-384, SHA-512 다이제스트가 나란히 표시되고, 각각 복사 버튼이 붙습니다. 해시 계산은 브라우저의 Web Crypto API와 로컬 MD5 구현으로 내 기기에서 실행되므로 파일이 업로드되지 않습니다.
0자 · 0단어 · 0줄
- MD5보안용 아님
- —
- SHA-1보안용 아님
- —
- SHA-256
- —
- SHA-384
- —
- SHA-512
- —
0자 · 0단어 · 0줄
이 브라우저 탭 안에서만 처리됩니다. 입력한 텍스트는 업로드되거나 저장되지 않습니다.
다이제스트 크기
길이와 빈 입력의 다이제스트는 페이지를 빌드할 때 이 페이지의 MD5 구현과 Web Crypto API로 계산했습니다.
| 알고리즘 | 다이제스트 비트 | 16진수 길이 | 블록 비트 | 상태 | 빈 입력의 해시 |
|---|---|---|---|---|---|
| MD5 | 128 | 32 | 512 | 취약: 2004년 충돌 발견 | d41d8cd98f00b204e9800998ecf8427e |
| SHA-1 | 160 | 40 | 512 | 취약: 2017년 충돌 시연 | da39a3ee5e6b4b0d3255bfef95601890afd80709 |
| SHA-256 | 256 | 64 | 512 | 안전(SHA-2) | e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 |
| SHA-384 | 384 | 96 | 1024 | 안전(SHA-2) | 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b |
| SHA-512 | 512 | 128 | 1024 | 안전(SHA-2) | cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e |
알고리즘 다섯 가지, 그중 두 가지는 은퇴
해시 함수는 크기와 상관없이 입력을 고정 길이의 지문으로 바꿉니다. 글자 하나만 바꿔도 출력 비트의 약 절반이 뒤집히므로 "UltKit"과 "ultkit"조차 전혀 다른 다이제스트가 나옵니다. 1992년 Ron Rivest가 RFC 1321로 발표한 MD5는 128비트(16진수 32자)를 냅니다. 2004년 Xiaoyun Wang 연구팀은 MD5 해시가 같은 서로 다른 두 입력을 만드는 방법을 보였고, 2012년에는 Flame 악성코드가 MD5 충돌을 이용해 Microsoft 코드 서명 인증서를 위조했습니다. SHA-1(160비트)도 2017년 Google과 CWI Amsterdam이 첫 실제 충돌인 SHAttered를 공개하면서 같은 길을 걸었습니다. 이 페이지에서는 두 알고리즘 모두 "보안용 아님"으로 표시합니다.
SHA-256, SHA-384, SHA-512는 NIST가 FIPS 180-4로 규정한 SHA-2 계열이며, 알려진 실용적 공격이 없습니다. SHA-256은 소프트웨어 다운로드, Git의 새 객체 형식, TLS 인증서, 비트코인의 기본값입니다. MD5와 SHA-1도 실수로 생긴 파일 손상을 찾거나 중복 파일을 가려내는 등 공격자가 없는 작업에는 여전히 충분하며, 그래서 많은 다운로드 페이지가 아직 이 값을 함께 표시합니다.
해시가 암호화가 아닌 이유
암호화는 애초에 되돌릴 수 있도록 설계되어, 키를 가진 사람은 원본을 다시 얻습니다. 해시에는 키가 없고 수많은 입력이 같은 다이제스트에 대응하므로 되돌릴 수 없습니다. 그렇다고 해시가 비밀을 담기에 안전한 것은 아닙니다. 짧거나 흔한 입력의 SHA-256을 본 공격자는 후보를 하나씩 해시해 일치하는 값을 찾으면 되고, 미리 계산된 테이블에는 알려진 비밀번호 수십억 개가 들어 있습니다. 빠른 해시는 빠르도록 만들어졌기에 최신 GPU는 초당 수십억 번 SHA-256을 시도합니다.
따라서 비밀번호는 평범한 MD5나 SHA-256이 아니라 Argon2, bcrypt, scrypt처럼 일부러 느리게 만든 솔트 비밀번호 해시로 저장하고, 비밀번호 자체는 비밀번호 생성기로 만드세요. 이 페이지는 빠른 해시가 잘하는 일에 쓰면 됩니다. 내려받은 파일이 배포자가 공개한 체크섬과 일치하는지 확인하고, 두 파일을 열지 않고 비교하고, 내 코드가 계산한 다이제스트를 검산하는 일입니다. 텍스트는 끝에 줄바꿈 없이 UTF-8로 해시되며, 터미널의 echo "text" | sha256sum 결과와 다른 이유는 대개 이 때문입니다. 개발자 도구 허브에서는 같은 예시 문자열로 해시와 되돌릴 수 있는 인코딩을 비교합니다.
자주 묻는 질문
- SHA-256 체크섬으로 내려받은 파일을 어떻게 확인하나요?
- 파일 해시로 파일을 고른 뒤 SHA-256 줄을 배포자 사이트의 값과 비교합니다. 모든 글자가 일치해야 합니다. 16진수 대문자 옵션은 a부터 f까지의 글자를 표시하는 방식만 바꿉니다.
- MD5나 SHA-256 해시를 복호화할 수 있나요?
- 아니요, 복호화할 대상 자체가 없습니다. 해시를 되돌린다고 주장하는 사이트는 이전에 해시해 둔 문자열 테이블에서 다이제스트를 찾아볼 뿐이며, 짧거나 흔한 입력에서만 통합니다.
- MD5가 깨졌는데도 제공하는 이유는 무엇인가요?
- 아직 많은 시스템이 MD5 체크섬을 공개하고 있고, 실수로 생긴 변경은 MD5로도 완벽하게 잡아냅니다. MD5가 깨졌다는 것은 충돌하는 파일을 일부러 만들 수 있는 공격자에 대해서만 해당합니다.
- 빈 문자열의 MD5 해시는 무엇인가요?
- d41d8cd98f00b204e9800998ecf8427e입니다. 이 값이 보이면 대개 프로그램이 아무것도 해시하지 않았다는 뜻입니다. 예를 들어 해시를 계산하기 전에 파일을 불러오지 못한 경우입니다.
- SHA-512가 SHA-256보다 더 안전한가요?
- 둘 다 깨지지 않았고 무차별 대입으로는 어림도 없습니다. SHA-512는 출력이 더 길고 64비트 프로세서에서 더 빠를 수 있지만, 체크섬과 서명에는 SHA-256이 더 널리 쓰이는 선택입니다.