Ir para o conteúdo
OpsKit

Codificador / decodificador Base64

Converta texto para Base64 e de volta. Trata corretamente caracteres acentuados, suporta o alfabeto seguro para URL usado pelo JWT e avisa quando o conteúdo é binário em vez de estragá-lo silenciosamente.

Saída

Tudo acontece no seu navegador. Esta página é um arquivo estático. O que você digita fica na aba, nunca é enviado a um servidor e some quando você fecha — então colar um token ou uma configuração real é seguro.

Quando você precisa disto

  • Ao ler um Secret do Kubernetes, em que kubectl get secret mostra cada valor em Base64.
  • Ao embutir uma imagem pequena ou um certificado em um arquivo de configuração, variável de ambiente ou data URI.
  • Ao inspecionar um cabeçalho Authorization, um payload de webhook ou um segmento de JWT que chegou codificado.

Exemplos resolvidos

ASCII simples

Entrada
hello world
Resultado
aGVsbG8gd29ybGQ=

O = final é preenchimento, não faz parte dos dados.

Texto acentuado

Entrada
ação
Resultado
YcOnw6Nv

Cada caractere acentuado ocupa dois bytes em UTF-8. Ferramentas que usam btoa() lançam erro aqui.

Seguro para URL, para um segmento JWT

Entrada
{"alg":"HS256","typ":"JWT"}
Resultado
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

Sem preenchimento e sem + ou /, então sobrevive dentro de uma URL.

Onde as pessoas erram

Achar que Base64 é criptografia

É uma codificação, reversível por qualquer pessoa. Um Secret do Kubernetes está codificado em Base64, não protegido — trate o conteúdo como texto puro no seu modelo de ameaças.

Passar Base64 seguro para URL a um decodificador padrão

Segmentos de JWT usam - e _ e dispensam preenchimento. Um decodificador estrito os rejeita. Converta o alfabeto e complete o comprimento para um múltiplo de 4 antes.

Perder bytes por uma quebra de linha final

echo "secret" | base64 também codifica a quebra de linha final. Use echo -n ou printf quando o valor precisar bater exatamente.

Perguntas frequentes

Por que a string codificada fica maior que a original?

Base64 representa 3 bytes com 4 caracteres, então a saída cresce cerca de 33%, mais o preenchimento. Esse custo é o preço de mover dados binários por um canal só de texto.

É seguro colar um segredo de produção aqui?

A página é estática e a conversão acontece em JavaScript dentro da sua aba. Nada é transmitido. Você pode conferir abrindo o painel de rede enquanto digita.

Como faço isso no terminal?

Codifique com printf '%s' 'texto' | base64 e decodifique com base64 -d. No macOS a opção de decodificar é -D. Para saída segura para URL adicione | tr '+/' '-_' | tr -d '='.

Ferramentas relacionadas