Base32 인코더 및 디코더

Base32는 바이너리 데이터를 32개의 문자로 표현합니다. 읽기 오류를 줄이기 위해 0/O나 1/I 없이 숫자 2-7과 26개의 대문자를 사용합니다. 그래서 사람이 입력하거나 소리 내어 읽어야 하는 것에 이상적입니다. 2단계 인증의 TOTP 시크릿, 바우처 코드, 대소문자를 구분하지 않는 식별자 같은 경우입니다. 이 도구는 바이너리나 텍스트를 Base32로 인코딩하고 다시 디코딩하며, 선택적 패딩을 포함해 RFC 4648을 따릅니다.

Base32를 인코딩하거나 디코딩하는 방법

  1. 1

    텍스트 붙여넣기 또는 파일 업로드

    입력은 바이트로 처리됩니다. 텍스트 입력의 기본 해석은 UTF-8입니다.

  2. 2

    방향 선택

    인코딩은 원시 바이트를 Base32 문자열로 바꾸고, 디코딩은 바이트를 복원합니다.

  3. 3

    패딩 설정

    RFC 4648은 길이가 8의 배수가 되도록 `=` 패딩을 지정합니다. TOTP 시크릿과 짧은 토큰에는 끌 수 있습니다.

  4. 4

    결과 복사

    인코딩 결과는 설정에 따라 대문자이며 패딩이 있거나 없게 출력됩니다.

RFC 4648 알파벳

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 2 3 4 5 6 7

0도 없고, 1도 없고, 8도 없고, 9도 없습니다. 각 문자는 5비트(2^5 = 32)를 인코딩하므로 입력 5바이트가 출력 8문자가 됩니다.

풀이 예시

ASCII 문자열 foo(바이트 0x66 0x6F 0x6F = 01100110 01101111 01101111)를 인코딩하면:

  1. 5비트 그룹으로 나눔: 01100 11001 10111 10110 1111(마지막 그룹은 패딩)
  2. 알파벳에 대응: M Z X W 6
  3. 8문자에 맞추기 위해 === 패딩 추가: MZXW6===

패딩과 길이 규칙

입력 바이트 수 출력 문자 수 패딩
1 8 ======
2 8 ====
3 8 ===
4 8 =
5 8 (없음)

RFC 4648 외의 변형

  • Base32 Hex — 알파벳 0-9A-V, DNSSEC의 NSEC3에서 사용됩니다.
  • Crockford’s Base32 — 사람의 입력에 최적화된 알파벳입니다. 디코딩 시 O0, I/L1로 치환합니다. ULID와 일부 라이선스 키에서 사용됩니다.

이 도구의 기본값은 표준 RFC 4648입니다.

TOTP 시크릿

Google Authenticator와 모든 최신 2FA 앱이 사용하는 otpauth:// URI 형식은 공유 시크릿을 패딩 없는 Base32로 인코딩합니다. “My Service”용 QR 코드를 스캔하면 secret= 파라미터가 Base32 문자열입니다. 이 도구로 디코딩하면 HMAC이 사용하는 원시 바이트를 확인할 수 있습니다.

자주 묻는 질문

Base32는 대소문자를 구분하지 않고 헷갈리는 문자를 피합니다. 사람이 읽거나 입력하는 모든 것에 중요합니다. Base64는 더 조밀해서 같은 바이트에 더 적은 문자가 필요하지만, Il, 0O를 구분해야 하므로 손글씨와 작은 인쇄에서 실패하기 쉽습니다.

RFC 4648은 필수라고 하지만, 대부분의 실제 사용처(TOTP 앱, ULID 라이브러리, DNSSEC 리졸버)는 패딩 없는 입력을 받습니다. 이 도구는 선택할 수 있으며, 어느 형식을 붙여넣어도 디코딩이 작동해야 합니다.

표준 Base32에는 0, 1, 8, 9가 없고 항상 대문자입니다. 입력에 그런 문자가 있다면 RFC 4648이 아니라 Crockford 변형이나 base32hex일 수 있습니다. 입력을 정리하거나 올바른 변형을 선택하세요.

아니요. 인코딩과 디코딩은 브라우저에서 이루어집니다. 입력도 결과도 사용자의 기기를 떠나지 않습니다.

관련 도구