Base32 인코딩 디코딩 rfc 4648
텍스트를 RFC 4648 Base32로 인코딩하거나 Base32 문자열을 원래 텍스트로 디코딩합니다.
이 도구가 하는 일
Base32는 데이터를 대문자 A-Z와 숫자 2-7, 총 32개 문자로만 표현하는 인코딩입니다. Base64와 목적은 같지만 사용하는 문자 집합이 더 좁습니다. 입력을 5비트씩 끊어 각 조각을 문자 하나에 대응시키므로, 8비트 문자로 5비트를 나르는 셈이라 결과가 원본보다 약 60% 커집니다. Base64의 33%보다 비효율적입니다.
그럼에도 Base32를 쓰는 이유는 문자 집합이 안전하기 때문입니다. 소문자와 대문자를 구분하지 않아 대소문자를 보존하지 못하는 환경에서도 값이 깨지지 않고, 0과 O, 1과 I처럼 눈으로 혼동하기 쉬운 문자를 아예 제외했습니다. 사람이 받아 적거나 전화로 불러줄 수 있고, 대소문자를 구분하지 않는 DNS 이름이나 파일 시스템에도 넣을 수 있습니다.
가장 널리 알려진 사용처는 2단계 인증(TOTP)입니다. 인증 앱에 등록할 때 나오는 비밀 키가 Base32 문자열입니다. 그 외에 일부 파일 공유 시스템의 해시 표기, DNS 기반 프로토콜, 사람이 입력해야 하는 라이선스 키에서도 사용됩니다.
언제 사용하나요
TOTP 인증 앱에 등록할 비밀 키를 확인하거나 만들 때, 대소문자를 구분하지 않는 시스템에 바이너리 값을 넣어야 할 때, 사용자가 손으로 입력하거나 구두로 전달해야 하는 코드를 만들 때, Base32로 저장된 값의 원본을 확인할 때 사용합니다.
입력과 출력 예시
hello
NBSWY3DP
5바이트가 정확히 8자로 떨어져 패딩이 붙지 않았습니다.
devtools
MRSXM5DPN5WHG===
8바이트는 5의 배수가 아니라 뒤에 = 패딩이 채워집니다.
NBSWY3DP
hello
디코딩 방향. 입력의 대소문자는 구분하지 않습니다.
주의사항
Base32는 암호화가 아니라 누구나 되돌릴 수 있는 인코딩입니다. TOTP 비밀 키가 Base32로 보인다고 해서 보호된 것이 아니므로 그대로 노출되지 않게 관리해야 합니다. 또한 Base32 변형이 여러 가지라는 점에 주의하십시오. 이 도구는 RFC 4648 표준 알파벳을 사용하는데, Crockford Base32나 z-base-32처럼 문자 배열이 다른 변형은 결과가 서로 호환되지 않습니다. 디코딩이 실패한다면 어떤 변형으로 만들어진 값인지 확인해야 합니다.
자주 묻는 질문
Base64 대신 Base32를 쓰는 이유가 있나요?
결과는 더 길지만 문자 집합이 안전합니다. 대소문자 구분이 없고 혼동하기 쉬운 문자가 빠져 있어 사람이 입력하거나 대소문자를 보존하지 못하는 시스템에서 유리합니다.
TOTP 비밀 키가 Base32인 이유는?
사용자가 인증 앱에 직접 입력하거나 QR로 전달받아야 하는데, 대소문자 혼동이나 오타 없이 다룰 수 있는 문자 집합이 필요하기 때문입니다.
다른 사이트와 결과가 다릅니다.
Base32에는 여러 변형이 있습니다. 이 도구는 RFC 4648 표준을 사용하며, Crockford 변형 등과는 알파벳이 달라 결과가 호환되지 않습니다.