Como converter Base32 em Base64
- Cole o Base32 em Entrada · Base32 (RFC 4648). Espaços entre grupos, minúsculas e
=ausente não são problema. - Leia o Base64 em Saída · Base64. Desmarque Preenchimento (=) abaixo da saída se o destino não quiser
=, ou ajuste a Quebra de linha para valores longos. - Clique em Copiar saída. Base64 → Base32 (RFC 4648) no seletor de direção faz o caminho de volta, assim como o Base64 para Base32.
Exemplos
| Base32 | Base64 | Observação |
|---|---|---|
JBSWY3DPEHPK3PXP | SGVsbG8h3q2+7w== | A chave de exemplo da documentação do formato de URI de chaves do Google Authenticator, 10 bytes |
jbsw y3dp ehpk 3pxp | SGVsbG8h3q2+7w== | A mesma chave, agrupada como os apps a exibem |
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ | MTIzNDU2Nzg5MDEyMzQ1Njc4OTA= | O segredo de teste da RFC 6238, 20 dígitos ASCII |
RBGA56K5GUXFZY3PQMYQKS3ACLQI2W6K | iEwO+V01Llzjb4MxBUtgEuCNW8o= | 20 bytes de aparência aleatória |
MZXW6YQ | Zm9vYg== | Entrada sem preenchimento; a forma com preenchimento é MZXW6YQ= |
A primeira chave decodifica para os bytes 48 65 6c 6c 6f 21 de ad be ef: a palavra Hello! seguida de de ad be ef. É por isso que o Base64 dela começa com SGVsbG8h, o Base64 de Hello!.
Por que converter um segredo de 2FA em Base64
A forma Base32 existe para pessoas: ela vai em QR codes e telas de configuração e pode ser digitada num celular. Código e configuração geralmente querem a chave bruta, e o Base64 é o jeito comum de guardar bytes brutos em JSON, YAML, variáveis de ambiente e bancos de dados. Casos típicos:
- Migrar contas TOTP de uma lista exportada de links
otpauth://para um sistema que guarda segredos em Base64. - Passar a chave para uma função ou biblioteca HMAC que recebe Base64 ou bytes, por exemplo ao verificar códigos no seu próprio servidor.
- Comparar duas cópias de um segredo. Agrupamentos, caixa ou preenchimento diferentes do mesmo Base32 geram uma única string Base64, então saídas iguais significam chaves iguais.
Um segredo em Base64 é exatamente tão sensível quanto o em Base32, então guarde-o onde você guardaria uma senha.
Base32 para Base64 em Python
O b32decode do Python é rígido com caixa e preenchimento, então normalize a string antes:
import base64
def b32_to_b64(secret):
s = secret.replace(" ", "").upper()
s += "=" * (-len(s) % 8)
return base64.b64encode(base64.b32decode(s)).decode()
b32_to_b64("jbsw y3dp ehpk 3pxp") # 'SGVsbG8h3q2+7w=='
Sem a chamada .upper(), o Python lança binascii.Error: Non-base32 digit found; sem a linha do preenchimento, Incorrect padding. Veja Base64 em Python para o lado do Base64.
Problemas comuns
- Erro num
9,8,1ou0. Esses dígitos não existem no Base32 da RFC 4648. O valor provavelmente é base32hex ou Crockford;91IMOR3F, por exemplo, falha na posição 1 aqui. Decodifique-o no decodificador Base32 com o alfabeto certo em De. - Erro num
-. Alguns sites mostram as chaves divididas com hifens. Remova-os; só os espaços em branco são ignorados. - O Base64 está correto, mas o servidor rejeita os códigos. Confira os outros parâmetros: algoritmo, número de dígitos e período precisam ser iguais nos dois lados, e o relógio do servidor precisa estar próximo do relógio do celular.
Perguntas frequentes
Como converter uma chave do Google Authenticator em Base64?
Pegue a chave do parâmetro secret= do link otpauth:// (ou a chave em texto mostrada abaixo do QR code) e cole aqui. JBSWY3DPEHPK3PXP vira SGVsbG8h3q2+7w==.
Por que o Base64 fica mais curto que o Base32?
O Base64 guarda 6 bits por caractere e o Base32 guarda 5, então os mesmos bytes precisam de menos caracteres Base64: 20 bytes são 32 caracteres Base32, mas 28 caracteres Base64.
Dá para converter base32hex ou Crockford Base32 aqui?
Esta página só lê Base32 da RFC 4648. Abra o decodificador Base32, ajuste De em Base32hex ou Crockford Base32 e Para em Base64.
Como converter Base32 em Base64 na linha de comando?
Com o GNU coreutils: printf 'JBSWY3DPEHPK3PXP' | base32 -d | base64. A entrada precisa estar em maiúsculas e sem espaços; tr -d ' ' | tr a-z A-Z a limpa antes.