인코딩 감지기

문자열이 Base64인지, 16진수인지, Base58인지, 아니면 다른 형식인지 확실하지 않다면 여기에 붙여넣으십시오. 감지기가 모든 디코더를 실행해 오류 없이 디코딩된 결과의 순위를 매기고, 디코딩된 데이터를 미리 보여 줍니다.

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

사용 방법

  1. 정체를 알 수 없는 문자열을 입력란에 붙여넣습니다.
  2. 감지기가 모든 디코더를 실행하고, 문자열을 오류 없이 디코딩하는 인코딩을 가능성이 높은 순서대로 ‘가능한 인코딩’에 나열합니다.
  3. 후보마다 ‘디코딩 미리 보기’에 표시되는 텍스트나 바이트와 감지된 파일 유형을 확인합니다.
  4. 인코딩을 알아냈다면 ‘도구 열기’로 해당 도구 페이지를 열어 데이터를 디코딩, 변환하거나 다운로드합니다.

감지기가 판단하는 방법

모든 인코딩에는 규칙이 있고, 문자열은 그 규칙을 따르거나 어깁니다. 감지기는 입력에 대해 각 디코더를 실행합니다. 알파벳에 없는 문자, 불가능한 길이, 잘못된 위치의 패딩을 만난 디코더는 제외되고, 나머지는 출력이 얼마나 그럴듯한지에 따라 순위가 매겨집니다.

  • 문자 집합. 16진수는 0-9와 a-f만 사용합니다. Base58에는 0, O, I, l이 절대 나오지 않습니다. +나 /가 있으면 Base64, -와 _가 있으면 Base64URL일 가능성이 높습니다.
  • 길이와 패딩. 16진수는 자릿수가 짝수여야 합니다. Base64는 4문자 단위, Base32는 8문자 단위로 동작하며, = 패딩은 끝에만 올 수 있습니다.
  • 읽을 수 있는 출력. 인쇄 가능한 문자로 이루어진 올바른 UTF-8로 디코딩되는 후보는 무작위처럼 보이는 바이트를 내놓는 후보보다 정답일 가능성이 훨씬 높습니다.
  • 파일 시그니처. 디코딩된 바이트가 PNG, JPEG, PDF, ZIP, gzip 헤더 같은 알려진 매직 넘버로 시작하면 해당 파일 유형과 함께 표시됩니다.

data: URI 접두사, Adobe의 <~ ~> 구분 기호, uuencode의 begin 줄 같은 래퍼는 해당 디코더가 알아서 처리합니다. 이 모든 과정은 브라우저에서 실행됩니다.

결과가 확정이 아니라 순위인 이유

알파벳은 서로 많이 겹칩니다. 문자열 48656c6c6f는 Hello를 16진수로 표기한 것이지만, 같은 10개 문자는 Base64, Base36, Base58, Base62로도 유효하며 각각 다른 바이트를 만들어 냅니다. 읽을 수 있는 텍스트가 나오는 것은 16진수로 해석했을 때뿐이므로 16진수가 1순위가 됩니다. cafe 같은 짧은 단어는 거의 모든 알파벳에 들어맞으며, 문자열 자체에는 어느 쪽을 의도했는지 알려 주는 정보가 없습니다.

입력이 길수록 우연히 일치할 가능성이 낮아지므로 답이 더 분명해집니다. 어떤 후보도 텍스트나 알려진 파일 유형으로 디코딩되지 않는다면 데이터가 암호화되었거나 압축되었거나 해시일 수 있습니다. 16진수로 표기한 SHA-256 해시는 완전히 올바른 16진수이지만, 그 바이트는 설계상 무작위처럼 보입니다.

자주 쓰는 인코딩을 눈으로 알아보기

인코딩대표적인 단서
16진수0-9 a-f만 사용하고 길이가 짝수입니다. 32자리, 40자리, 64자리라면 MD5, SHA-1, SHA-256 해시인 경우가 많습니다.
Base64A-Z a-z 0-9 + /를 사용하고 길이가 4의 배수이며, = 또는 ==로 끝날 수 있습니다.
Base64URL+와 / 대신 -와 _를 쓰고 보통 패딩이 없습니다. 점으로 이어진 세 부분이라면 JWT입니다.
Base32대문자 A-Z와 2-7을 사용하고, =로 8의 배수 길이까지 채웁니다.
Base580 O I l을 뺀 영문자와 숫자입니다. 비트코인 주소, Qm으로 시작하는 IPFS 해시가 대표적입니다.
Ascii85, Base85영문자, 숫자, 문장 부호가 빽빽하게 섞여 있습니다. Ascii85는 <~ ~>로 감싸여 있기도 합니다.

자주 묻는 질문

문자열이 Base64인지 어떻게 알 수 있습니까?
A-Z, a-z, 0-9, +, / 문자로 이루어져 있는지, 길이가 4의 배수인지, 끝에 = 기호가 최대 두 개인지 확인하십시오. 여기에 붙여넣으면 읽을 수 있는 텍스트나 알려진 파일 유형으로 디코딩되는지 알 수 있습니다. 오류 위치까지 정확히 알려 주는 엄격한 검사가 필요하면 Base64 유효성 검사기를 이용하십시오.
감지기가 인코딩을 여러 개 보여 주는 이유는 무엇입니까?

많은 문자열, 특히 짧은 문자열은 여러 알파벳에서 동시에 유효합니다. 감지기는 입력을 오류 없이 디코딩하는 모든 인코딩을 나열하고, 읽을 수 있는 텍스트와 파일 시그니처를 기준으로 가장 그럴듯한 것을 맨 앞에 둡니다.

읽을 수 있는 텍스트로 디코딩되는 것이 없습니다. 무슨 뜻입니까?
데이터가 이미지나 압축 파일 같은 바이너리일 수 있으며, 이 경우 감지된 파일 유형이 도움이 됩니다. 암호화된 데이터나 해시, 또는 비표준 알파벳으로 작성된 바이트일 수도 있습니다. 마지막 경우라면 사용자 지정 알파벳 도구를 사용해 보십시오.
감지기로 문자열을 복호화하거나 해시를 되돌릴 수 있습니까?

아니요. Base64 같은 인코딩은 키를 사용하지 않고 처음부터 되돌릴 수 있도록 설계되었기 때문에 감지하고 디코딩할 수 있습니다. 암호화된 데이터는 키 없이 읽을 수 없으며, 해시는 원래 입력으로 되돌릴 수 없습니다.

붙여넣은 문자열이 서버로 전송됩니까?

아니요. 모든 디코더가 브라우저에서 로컬로 실행되므로 토큰, 키, 로그 데이터가 기기 밖으로 나가지 않습니다.