Base32 кодує бінарні дані у текст так само, як Base64, але використовує менший алфавіт — лише 32 символи (A–Z та цифри 2–7). Через це результат довший за Base64 приблизно на 60%, зате він стійкіший до помилок при ручному введенні чи копіюванні.
Чим алфавіт відрізняється від Base64
Base32 навмисно не включає символи, які легко переплутати візуально або при друці — наприклад, 0/O чи 1/I/l. Алфавіт складається виключно з великих літер і цифр, тому кодування регістронезалежне: ABCDEFG і abcdefg декодуються однаково.
Навіщо потрібен окремий формат
Base32 обирають там, де результат може вводитись вручну людиною або передаватись через системи, чутливі до регістру символів чи спеціальних знаків Base64 (+, /, =). Типовий приклад — імена доменів і DNS-мітки, які не розрізняють регістр.
Типові сценарії використання
- Секретні ключі TOTP для двофакторної автентифікації (Google Authenticator та подібні застосунки).
- Ідентифікатори в системах, де важлива регістронезалежність.
- Кодування даних для середовищ з обмеженим набором допустимих символів.
Base32 проти Base64
Якщо розмір результату критичний і середовище коректно обробляє регістр та спецсимволи — вигідніший Base64. Якщо ж дані можуть передаватись голосом, вручну набиратись або проходити через регістронезалежні системи — Base32 надійніший вибір.
Base32 проти Base32hex
Існує ще один варіант — Base32hex (RFC 4648), який використовує алфавіт 0–9A–V замість A–Z2–7. Він зберігає порядок сортування рядків таким самим, як і порядок вихідних байтів, що важливо для деяких баз даних і файлових систем. Стандартний Base32 і Base32hex несумісні між собою — рядок, закодований одним варіантом, не декодується коректно іншим.