Enviar um arquivo
  1. base64hub
  2. Outras bases
  3. Base64 para Base32

Base64 para Base32 para segredos TOTP

Cole um segredo em Base64 e receba os mesmos bytes em Base32 RFC 4648, prontos para um app autenticador ou um link otpauth://. Desmarque o preenchimento e o resultado pode ir direto para o parâmetro secret=.

Grátis sem cadastro, sem limites Local nada é enviado Pronto p/ TOTP Base32 sem preenchimento para otpauth Atualizado 27 de out. de 2026
Entrada 0Bytes 0 BSaída 0

Processado no seu navegador. Esta página não consegue enviar seus dados para lugar nenhum – como sabemos

Como converter Base64 para Base32

  1. Cole o Base64 em Entrada · Base64. Caracteres URL-safe (-, _), preenchimento ausente e quebras de linha não são problema.
  2. Leia o resultado em Saída · Base32 (RFC 4648).
  3. Para um link otpauth:// ou um app autenticador, desmarque Preenchimento (=) abaixo da saída.
  4. Clique em Copiar saída. Base32 (RFC 4648) → Base64 no seletor de direção converte no sentido inverso, assim como a página Base32 para Base64.

Os bytes no meio do caminho não mudam. Entra uma chave de 20 bytes, sai uma chave de 20 bytes, como mostra o contador Bytes abaixo da ferramenta.

Exemplos

Base64Base32Bytes
iEwO+V01Llzjb4MxBUtgEuCNW8o=RBGA56K5GUXFZY3PQMYQKS3ACLQI2W6K20
iEwO-V01Llzjb4MxBUtgEuCNW8oRBGA56K5GUXFZY3PQMYQKS3ACLQI2W6K20, entrada URL-safe sem preenchimento
MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ20, o segredo de teste da RFC 6238
SGVsbG8h3q2+7w==JBSWY3DPEHPK3PXP10

As duas strings das primeiras linhas não se parecem em nada, e isso é normal: o Base64 usa 6 bits por caractere e o Base32 usa 5, então os caracteres nunca se alinham.

O erro a evitar é codificar os caracteres do Base64 como texto. Colar iEwO+V01Llzjb4MxBUtgEuCNW8o= num codificador de texto para Base32 dá NFCXOTZLKYYDCTDM…, que é Base32 válido dos próprios 28 caracteres. Os códigos gerados a partir disso nunca vão bater com os do servidor.

Configurando TOTP a partir de um segredo em Base64

O código do servidor muitas vezes guarda o segredo compartilhado em Base64, ou o gera com um comando como este:

openssl rand -base64 20

Para cadastrá-lo num app autenticador, converta aqui e depois monte o URI da chave:

otpauth://totp/Example:alice@example.com?secret=RBGA56K5GUXFZY3PQMYQKS3ACLQI2W6K&issuer=Example

algorithm, digits e period podem ser acrescentados como parâmetros; sem eles, os apps assumem SHA-1, 6 dígitos e 30 segundos. Transforme o link em QR code com qualquer ferramenta de QR local, ou deixe o usuário digitar o segredo Base32 à mão. O segredo são os mesmos bytes que o seu servidor passa para o HMAC, então os códigos batem sem nenhuma mudança no servidor.

Se você precisa de um segredo novo em vez de um existente, gere 20 bytes aleatórios em Base64 com o gerador de Base64 aleatório (predefinição Personalizado) e converta aqui.

Comprimentos para tamanhos de chave comuns

ChaveBase64Base32, sem preenchimentoBase32 com =
10 bytes (80 bits)161616
16 bytes (128 bits)242632
20 bytes (160 bits)283232
32 bytes (256 bits)445256

Tamanhos múltiplos de 5 bytes, como 10 e 20, dão Base32 sem preenchimento nenhum.

A mesma conversão em Python

import base64

secret_b64 = "iEwO+V01Llzjb4MxBUtgEuCNW8o="
base64.b32encode(base64.b64decode(secret_b64)).decode().rstrip("=")
# 'RBGA56K5GUXFZY3PQMYQKS3ACLQI2W6K'

Para entrada URL-safe, use base64.urlsafe_b64decode e acrescente o preenchimento = antes, se ele tiver sido removido. Mais sobre isso em Base64 em Python.

Perguntas frequentes

Por que apps autenticadores precisam de Base32 em vez de Base64?

O formato de URI de chave otpauth://, que os apps leem dos QR codes, define o segredo como Base32. Ele também precisa poder ser digitado quando o QR code não pode ser escaneado, e o Base32 não tem +, / nem mistura de maiúsculas e minúsculas para confundir.

O segredo em Base32 deve ter preenchimento =?

Não num link otpauth://: o formato de URI de chave diz que o preenchimento deve ser omitido. Desmarque Preenchimento (=). Um segredo de 20 bytes tem 32 caracteres e nem precisa de preenchimento.

Qual deve ser o tamanho de um segredo TOTP?

A RFC 4226 exige pelo menos 128 bits e recomenda 160 bits, ou seja, 20 bytes: 28 caracteres em Base64 ou 32 em Base32.

Converter um segredo para Base32 é um risco de segurança?

A codificação não acrescenta nem tira proteção; qualquer pessoa com a string, em qualquer das duas formas, consegue gerar os seus códigos. O risco está em onde você cola o segredo. Esta página converte no navegador, e a Content Security Policy dela bloqueia requisições de rede que não sejam as do contador de visitas da Cloudflare.