해시 식별기

해시를 붙여넣으면 그 해시를 만들었을 수 있는 알고리즘을 가능성이 높은 순서로 보여 줍니다. 16진수와 Base64 다이제스트, 비밀번호 해시 형식을 읽을 수 있으며, 추측한 알고리즘이 맞는지 직접 입력한 텍스트로 확인할 수도 있습니다.

브라우저에서만 실행되며 어떤 데이터도 업로드되지 않습니다.

사용 방법

  1. 해시 하나를 붙여넣습니다. 0x, sha256=, sha384- 같은 표시는 제거하되, 비밀번호 해시는 맨 앞의 $, {, * 문자까지 포함해 그대로 둡니다.
  2. 결과를 확인합니다. 감지된 형태와 비트 단위 크기에 이어 가능한 알고리즘이 표시되며, 가장 유력한 알고리즘에는 ‘가장 유력’ 표시가 붙습니다. 문자열에 들어 있다면 bcrypt의 비용 계수나 sha256crypt, sha512crypt, PBKDF2의 라운드 수도 보여 줍니다.
  3. MD5, SHA-1, SHA-256, SHA-512, CRC-32, CRC-32C 후보에서는 ‘도구 열기’를 눌러 해당 계산기로 이동할 수 있습니다.
  4. 원래 텍스트를 알거나 짐작할 수 있다면 ‘텍스트로 확인’에 입력해 어떤 알고리즘이 그 해시를 재현하는지 확인합니다.

해시를 식별하는 방법

모든 해시 알고리즘은 출력 크기가 정해져 있고 16진수는 바이트당 두 문자를 쓰므로, 16진수 문자열의 길이가 가장 강력한 단서입니다. 이 도구는 문자 집합도 확인하고, 비밀번호 해시 형식이 맨 앞에 붙이는 접두사도 찾습니다.

16진수 문자 수비트대표적인 알고리즘
832CRC-32, CRC-32C, Adler-32
32128MD5, NTLM, MD4
40160SHA-1, RIPEMD-160
56224SHA-224, SHA3-224
64256SHA-256, SHA3-256, BLAKE2s, Keccak-256
96384SHA-384, SHA3-384
128512SHA-512, SHA3-512, BLAKE2b, Whirlpool

길이만으로는 결론을 내릴 수 없습니다. 좋은 해시는 무작위 데이터처럼 보이고 어떤 알고리즘을 썼는지 나타내는 표시가 없기 때문입니다. 32자 값은 MD5일 수도, MD4일 수도, Windows가 계정 비밀번호에 사용하는 NTLM(UTF-16LE로 인코딩한 비밀번호의 MD4)일 수도 있습니다. 그래서 이 도구는 각 알고리즘이 얼마나 흔히 쓰이는지에 따라 후보의 순위를 매깁니다. 보통은 MD5가 먼저이지만, 일부 Windows 비밀번호 덤프 도구가 출력하는 것처럼 해시가 모두 대문자이면 NTLM이 먼저입니다. 마찬가지로 이더리움의 Keccak-256과 표준화된 SHA3-256은 패딩만 다를 뿐 둘 다 16진수 64자를 출력합니다.

Base64 다이제스트와 비밀번호 해시 형식

일부 시스템은 다이제스트를 16진수 대신 Base64로 씁니다. 16바이트(MD5, 예를 들어 Content-MD5 헤더)는 24자, SHA-1은 28자, SHA-256은 44자, SHA-384는 64자(예를 들어 Subresource Integrity 속성), SHA-512는 88자입니다. 도구는 길이를 바이트 수로 환산해 같은 후보를 보여 줍니다. 패딩이 없거나 URL 안전 문자가 쓰여도 받아들이지만, sha384- 같은 접두사는 먼저 제거하십시오.

비밀번호 해시 형식은 스스로를 설명합니다. 접두사가 알고리즘을 나타내고, 솔트와 비용 설정이 문자열 안에 기록되어 있습니다. 최신 형식은 솔트를 사용하며 일부러 느리게 설계되었습니다. 마지막 두 행의 LDAP와 MySQL 형식은 빠른 SHA-1 기반 구성이며, 그중 {SSHA}만 솔트를 추가합니다.

시작 문자열형식주로 쓰이는 곳
$2a$, $2b$, $2y$bcrypt, 항상 60자. 이어지는 두 자리 숫자가 비용 계수이며 1 올라갈 때마다 작업량이 두 배가 됨웹 프레임워크, PHP password_hash()
$argon2id$메모리(m), 시간(t), 병렬성(p) 설정이 포함된 Argon2id최신 애플리케이션, OWASP 권장
$6$, $5$sha512crypt, sha256crypt, 선택적으로 rounds= 포함Linux의 /etc/shadow
$y$yescrypt최근 여러 Linux 배포판의 /etc/shadow
$1$, $apr1$md5crypt, Apache MD5오래된 Unix 시스템, .htpasswd
pbkdf2_sha256$반복 횟수가 포함된 PBKDF2-SHA256Django
{SHA}, {SSHA}SHA-1, 솔트를 적용한 SHA-1LDAP 디렉터리
* 뒤에 16진수 40자리MySQL 4.1+ PASSWORD()MySQL 사용자 테이블

식별은 크래킹이 아닙니다

해시는 단방향입니다. 식별기는 문자열의 형태만 살펴볼 뿐 입력을 알아내거나 복호화하거나 조회할 수 없으며, 서버나 온라인 데이터베이스에 아무것도 보내지 않습니다. 입력을 찾는 유일한 방법은 후보를 추측해 하나씩 해시해 보는 것이며, hashcat이나 John the Ripper 같은 비밀번호 복구 도구가 알고리즘을 알아낸 뒤 하는 일이 바로 이것입니다. bcrypt나 Argon2처럼 솔트를 쓰는 느린 형식은 이런 추측에 드는 비용을 높이기 위해 존재합니다. 다룰 권한이 있는 해시만 테스트하십시오.

텍스트로 확인은 특정 추측 하나를 검사합니다. 입력한 텍스트를 UTF-8로 MD5, SHA-1, SHA-256, SHA-384, SHA-512, CRC-32, CRC-32C 해시로 계산하고, 해시가 대문자나 소문자 16진수로 쓰였든 Base64로 쓰였든 어떤 결과가 그 해시와 같은지 알려 줍니다. 솔트를 적용한 비밀번호 해시나 HMAC은 솔트나 비밀 키에도 좌우되므로 확인할 수 없습니다. 키가 있는 값이라면 그 키와 함께 HMAC 생성기를 사용하십시오.

자주 묻는 질문

이 도구로 원래 텍스트나 비밀번호를 알 수 있습니까?

아니요. 이 도구는 가능성이 높은 알고리즘의 이름만 알려 줍니다. 해시 함수는 되돌릴 수 없습니다. 온라인 "해시 복호화" 서비스는 흔한 단어와 유출된 비밀번호의 해시를 모은 테이블에서 값을 찾아보는 것이므로, 약하고 솔트가 없는 입력에만 통합니다.

해시 하나에 여러 알고리즘이 표시되는 이유는 무엇입니까?

출력 크기가 같은 알고리즘은 길이와 문자 집합이 같은 문자열을 만들며, 해시 안에는 어떤 알고리즘을 썼는지 기록되어 있지 않습니다. 각 알고리즘이 얼마나 흔히 쓰이는지에 따라 가장 유력한 후보가 맨 앞에 표시됩니다. 확실히 하려면 알고 있는 입력으로 해시를 다시 계산해 보십시오.

16진수 32자 문자열은 항상 MD5입니까?

대개는 그렇지만 항상 그렇지는 않습니다. NTLM, MD4, MD2, RIPEMD-128도 같은 길이를 출력하며, 하이픈을 뺀 UUID나 무작위 토큰처럼 16진수로 쓴 128비트 값도 모두 길이가 같습니다. 판단은 맥락에 달려 있습니다. Windows 비밀번호 해시라면 NTLM이고, 파일 체크섬이라면 MD5입니다.

‘텍스트로 확인’에서 일치하는 결과가 나오지 않는 이유는 무엇입니까?
텍스트가 바이트 단위까지 정확히 같아야 합니다. 흔한 원인은 끝에 붙은 줄 바꿈 문자(echo -n이나 printf를 쓰지 않으면 echo가 줄 바꿈 문자를 하나 추가합니다), 공백이나 대소문자의 차이, UTF-8이 아닌 다른 인코딩으로 해시한 텍스트, 비밀번호 해시나 HMAC처럼 솔트나 키가 쓰인 경우, 그리고 SHA-3, BLAKE2, NTLM처럼 확인 기능이 지원하지 않는 알고리즘입니다.
여기에 비밀번호 해시를 붙여넣어도 안전합니까?

분석은 전적으로 브라우저에서 이루어지며 해시는 전송되거나 저장되지 않습니다. 다만 실제 시스템의 비밀번호 해시를 가진 사람은 누구나 오프라인에서 추측을 시도할 수 있으므로, 이런 해시는 민감한 정보로 다루고 티켓, 채팅, 스크린샷에 남기지 마십시오.