Guia · Segurança · Base64

Base64 não é criptografia

Base64 deixa um texto ilegível a olho nu, e por isso muita gente acha que ele protege o conteúdo. Não protege: é só uma forma de escrever bytes com letras e números, e qualquer pessoa desfaz em um clique. Veja o que ele faz, onde ele é útil e o que usar quando o assunto é segredo.

O que o Base64 é de verdade

Base64 é uma codificação: uma regra pública para representar bytes quaisquer usando apenas 64 caracteres imprimíveis. A regra está na RFC 4648, que usa um subconjunto de 65 caracteres do US-ASCII (as letras de A a Z e de a a z, os dígitos de 0 a 9, o + e a /, mais o = como preenchimento). Cada grupo de 3 bytes (24 bits) vira 4 caracteres.

Não existe chave, senha ou segredo no processo. Quem conhece a regra, e ela é pública, desfaz a conversão. A própria RFC avisa na seção de segurança que a codificação esconde visualmente informações fáceis de reconhecer, mas não oferece nenhuma confidencialidade computacional. A senha é o exemplo que o texto cita.

Exemplo real, rodado com o código do Me Ajuda Flow. O texto usuario:SenhaForte123 vira:

dXN1YXJpbzpTZW5oYUZvcnRlMTIz

E ao decodificar essa mesma sequência volta exatamente usuario:SenhaForte123, sem chave nenhuma. Parece embaralhado, mas não está protegido.

Quanto o Base64 aumenta o tamanho

Como 3 bytes viram 4 caracteres, o resultado fica cerca de 33% maior (4 dividido por 3). Quando o tamanho original não é múltiplo de 3, o final recebe um ou dois sinais = de preenchimento, então a conta exata é: tamanho codificado = arredondar para cima (bytes / 3) x 4.

Na prática, um PDF de 3 MB enviado como Base64 dentro de um JSON ocupa por volta de 4 MB. Isso importa quando o serviço de destino tem limite de tamanho de requisição: confira o limite na documentação do serviço, contando o tamanho já codificado.

Base64URL: a variante para endereços e tokens

Os caracteres + e / têm significado especial em endereços (URLs) e nomes de arquivo. Por isso a RFC 4648 define, na seção 5, uma variante "URL and filename safe": é idêntica à padrão, exceto pelos valores 62 e 63, que passam a ser - (hífen) e _ (sublinhado). A RFC também diz que o = costuma ser codificado com porcentagem em URIs e que, se o tamanho dos dados for conhecido, o preenchimento pode ser omitido.

Exemplo real: o texto >>>??? em Base64 padrão é Pj4+Pz8/. Em Base64URL, sem preenchimento, fica Pj4-Pz8_. Os bytes são os mesmos, só dois caracteres mudam. O botão de Base64 URL-safe da ferramenta do site gera exatamente essa forma.

É o formato usado nas partes de um JWT (cabeçalho e payload). Isso explica por que um JWT começa quase sempre com eyJ: é o início de um JSON que abre com {". Decodificar um JWT mostra o conteúdo, mas não prova que ele é autêntico.

Quando usar Base64

Use quando precisar colocar bytes em um lugar que só aceita texto:

O motivo é compatibilidade, nunca sigilo. Se o texto Base64 vazar, o conteúdo vaza junto.

Erros comuns

Senha em Base64 em fluxo ou em requisição HTTP

O erro mais frequente: guardar uma senha, uma chave de API ou um token "em Base64 para não ficar visível" em uma variável do fluxo, em uma planilha ou em um corpo HTTP. Quem abrir o histórico de execução ou interceptar a requisição decodifica em segundos, como no exemplo da seção inicial. Segredos devem ficar em um local próprio para isso, não em texto disfarçado.

Confundir Base64 com hash

Hash não tem volta, Base64 tem. Se você precisa comparar uma senha sem guardá-la, o caminho é um hash próprio para senhas, não codificação.

Quebrar o texto ao copiar

Espaços, quebras de linha ou um caractere trocado fazem a decodificação falhar. No decodificador do site, um caractere fora do alfabeto gera uma mensagem como: o caractere $ (posição 4) não existe em Base64.

Decodificar em Power Automate

A documentação da Microsoft lista as funções base64 (codifica uma string), base64ToString (decodifica para texto) e base64ToBinary (decodifica para binário). Elas vêm da linguagem de expressões de fluxos de trabalho, a mesma documentada para o Logic Apps. Os exemplos da própria Microsoft:

base64('hello')

Retorna "aGVsbG8=".

base64ToString('aGVsbG8=')

Retorna "hello". Resultado igual ao que a ferramenta do Me Ajuda Flow produz para esse texto.

O que usar para proteger de verdade

A escolha depende do que você precisa garantir:

Este guia é informativo e não substitui a política de segurança da sua empresa nem a orientação de um especialista.

Checklist rápido

  1. Se o texto parece embaralhado e termina com = ou ==, provavelmente é Base64: decodifique antes de achar que é criptografia.
  2. Se é um segredo, tire do Base64 e mude a senha se ela já circulou assim.
  3. Se precisa enviar arquivo em JSON, use Base64 e conte 33% a mais no limite de tamanho.
  4. Se contém - e _ e começa com eyJ, é Base64URL, provavelmente de um JWT.

Para codificar ou decodificar na hora, inclusive em Base64URL, use a ferramenta Base64 do Me Ajuda Flow. Para ler o cabeçalho e o payload de um token, veja o decodificador de JWT, e para gerar o resumo de um conteúdo, a ferramenta de hash.

Ferramentas para usar com este guia

Fontes oficiais