Base32 인코더 및 디코더

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

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

  1. 1

    변환할 텍스트 붙여넣기

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

  2. 2

    방향 선택

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

  3. 3

    패딩 동작 확인

    RFC 4648은 인코딩 결과가 8의 배수가 되도록 `=`로 채웁니다. 디코더는 패딩이 있든 없든 모두 받아들입니다.

  4. 4

    결과 복사

    인코딩 결과는 대문자이며 8의 배수가 되도록 `=`로 채워집니다.

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은 인코딩 시 패딩을 규정합니다. 이 도구는 인코딩 결과를 항상 8의 배수가 되도록 =로 채웁니다. 대부분의 실제 사용처(TOTP 앱, ULID 라이브러리, DNSSEC 리졸버)는 패딩 없는 입력을 받아들이며, 이 디코더는 패딩 유무와 무관하게 양쪽 모두를 받습니다.

표준 Base32에는 0, 1, 8, 9가 없고 항상 대문자입니다. 디코더는 RFC 4648 알파벳 밖의 문자를 조용히 무시하므로, 소문자나 특수한 문자가 섞인 입력은 잘못된 바이트로 디코딩됩니다. 디코딩 전에 입력을 대문자 A-Z와 숫자 2-7로 정규화하세요.

예. 결과를 계산하기 위해 텍스트가 페이지의 서버로 전송되며, 여러 단계 보기에서는 같은 텍스트가 단계 링크에도 담깁니다. 저장되거나 기록되지는 않습니다.

관련 도구

이 도구는 다른 언어로도 제공됩니다