UltKit

해시 생성기

텍스트를 입력하거나 파일을 고르면 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진수 길이블록 비트상태빈 입력의 해시
MD512832512취약: 2004년 충돌 발견d41d8cd98f00b204e9800998ecf8427e
SHA-116040512취약: 2017년 충돌 시연da39a3ee5e6b4b0d3255bfef95601890afd80709
SHA-25625664512안전(SHA-2)e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
SHA-384384961024안전(SHA-2)38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b
SHA-5125121281024안전(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이 더 널리 쓰이는 선택입니다.