Todos os artigos

Base32: em que difere do Base64 e quando é mais prático

O Base32 resolve um problema bem específico: quando alguém precisa ler, ditar por telefone ou digitar à mão uma sequência de caracteres, um alfabeto de 32 símbolos gera muito menos erro do que os 64 caracteres do Base64.

O caso clássico: configurar 2FA sem QR code

Quando um app como Google Authenticator ou Microsoft Authenticator não consegue ler o QR code, ele mostra uma "chave de configuração" para digitar manualmente — essa chave é Base32, não Base64. É comum acontecer em bancos e fintechs brasileiras quando a câmera do celular falha ou o usuário está configurando o app em outro aparelho.

Um alfabeto pensado para evitar erro na hora de ditar

O Base32 exclui completamente 0, 1, 8, 9 e as letras O, I, L — justamente os caracteres que mais geram confusão quando alguém lê em voz alta pelo telefone ou olha para uma tela de baixa resolução. Ditar "zero" e a letra "ó" ao telefone em português já causa confusão sem essa ambiguidade extra; o Base32 elimina o problema na raiz ao não usar a letra O de forma alguma.

Onde ele aparece na prática

  • Endereços .onion da rede Tor — os 56 caracteres do subdomínio são uma chave pública Ed25519 codificada em Base32.
  • Rótulos DNS e subdomínios, que não diferenciam maiúsculas de minúsculas por definição do protocolo.
  • Códigos de cupom ou referência impressos num recibo, que o cliente precisa redigitar manualmente num site.

O preço da legibilidade: strings mais longas

Com menos símbolos por caractere, cada byte precisa de mais caracteres para ser representado — o resultado é cerca de 60% mais longo que o Base64 equivalente. Para uma chave secreta de 20 bytes essa diferença é irrelevante, mas para um arquivo de vários megabytes o Base32 deixa de fazer sentido.

Base32 e Base32hex não são intercambiáveis

A RFC 4648 também define o Base32hex, que usa o alfabeto 0–9A–V em vez de A–Z2–7 e preserva a mesma ordem de classificação das strings que a ordem dos bytes originais — algo que importa para certos bancos de dados. Uma string codificada numa variante não é decodificada corretamente pela outra, então vale confirmar qual delas o sistema em questão espera antes de decodificar.

Experimentar a ferramenta