Base32 인코더 및 디코더

텍스트, 16진수 바이트, 파일을 Base32로 변환하고 되돌립니다. RFC 4648 알파벳, Base32hex, Crockford, z-base-32 중에서 고를 수 있고 패딩과 대소문자도 설정할 수 있습니다.

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

사용 방법

  1. 텍스트를 Base32로 바꾸려면 ‘인코딩’을, Base32를 텍스트로 되돌리려면 ‘디코딩’을 선택합니다.
  2. ‘변형’을 고릅니다. 기본값은 TOTP 비밀 키와 대부분의 라이브러리에서 쓰는 ‘RFC 4648’입니다.
  3. 내용을 입력하거나 붙여넣거나 파일을 엽니다. 결과는 입력하는 즉시 갱신됩니다.
  4. 결과를 복사하거나 파일로 다운로드합니다.

Base32란?

Base32는 인쇄 가능한 문자 32개로 바이너리 데이터를 표현합니다. 문자 하나가 5비트를 담으므로 입력 5바이트가 출력 8문자가 됩니다. 출력은 입력보다 약 60% 커져 Base64보다 오버헤드가 크지만, 알파벳에 소문자와 헷갈리기 쉬운 기호가 없습니다.

RFC 4648에 정의된 표준 알파벳은 문자 A-Z와 숫자 2-7을 사용합니다. 숫자 0, 1, 8, 9는 문자 O, I, B와 혼동되지 않도록 제외되었습니다. 입력 길이가 5바이트의 배수가 아니면 출력 길이가 8의 배수가 되도록 =로 패딩합니다.

Base32가 사용되는 곳

  • 2단계 인증. 인증 앱에 쓰이는 TOTP와 HOTP 비밀 키(otpauth:// 링크의 secret= 값)는 Base32 문자열입니다.
  • 대소문자를 구분하지 않는 시스템. 알파벳에 대소문자 구분이 없으므로 Base32는 대소문자를 무시하는 파일 시스템, DNS 레이블, 이메일 주소에서도 손상되지 않습니다.
  • 사람이 직접 입력하는 코드. 라이선스 키, onion 주소, 짧은 식별자는 소리 내어 읽고 입력하기 쉽도록 Base32를 사용합니다.

가독성보다 크기가 중요하다면 Base64가 더 간결합니다. 헷갈리는 문자가 없는 짧은 식별자가 필요하다면 Crockford Base32와 Base58을 비교해 보십시오.

Base32 변형

변형알파벳주요 용도
RFC 4648A-Z 2-7TOTP 비밀 키, 일반 용도
Base32hex0-9 A-V정렬 순서가 원본 바이트와 일치, DNSSEC NSEC3
Crockford0-9 A-Z에서 I, L, O, U 제외읽기 쉬운 ID, ULID
z-base-32소문자, 순서 재배열사람이 다루기 쉬운 키, OpenPGP WKD, ZRTP

코드에서 Base32 사용하기

# Python
import base64
base64.b32encode(b'hello')        # 인코딩
base64.b32decode('NBSWY3DP')      # 디코딩

// Node.js에는 Base32가 내장되어 있지 않으므로 "hi-base32" 같은 패키지를 사용
// Go (import "encoding/base32")
base32.StdEncoding.EncodeToString(data)

사양

알파벳A-Z 2-7
출력 크기5바이트당 8문자(160%)
패딩= 문자로 8의 배수 길이까지 채움
표준RFC 4648 6절
대소문자 구분아니요

예시

입력 (UTF-8)출력
Hello, World!JBSWY3DPFQQFO33SNRSCC===
Base64.isIJQXGZJWGQXGS4Y=
你好4S62BZNFXU======

자주 묻는 질문

Base32는 대소문자를 구분합니까?

RFC 4648 알파벳은 대문자로 정의되어 있지만 이 디코더는 소문자 입력도 받아들입니다. 소문자 출력이 필요하면 ‘소문자’ 옵션을 사용하십시오.

Base32 문자열 끝에 = 기호가 붙는 이유는 무엇입니까?

등호는 마지막 블록을 8문자로 채우는 패딩입니다. 대부분의 TOTP 앱을 비롯한 많은 시스템은 패딩 없는 Base32도 받아들입니다. 패딩을 없애려면 ‘패딩’을 끄십시오.

Base32는 원본 데이터보다 얼마나 커집니까?

5바이트가 8문자가 되므로 Base32 출력은 입력의 약 1.6배입니다. Base64는 약 1.33배입니다.

이 도구로 TOTP 비밀 키를 디코딩할 수 있습니까?

예. 비밀 키를 ‘디코딩’ 탭에 붙여넣고 출력을 ‘16진수’로 선택하면 원시 키 바이트를 볼 수 있습니다. 비밀 키에 포함된 공백은 무시됩니다.