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.
hello(5 bytes) viraaGVsbG8=(8 caracteres).{"id":42}(9 bytes) viraeyJpZCI6NDJ9(12 caracteres, sem preenchimento).- Um arquivo de 3000 bytes vira 4000 caracteres. Um de 300 bytes vira 400.
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:
- Anexos e arquivos dentro de JSON. APIs costumam receber o conteúdo do arquivo como uma string Base64 no corpo da requisição.
- Imagens embutidas em HTML e CSS, com o prefixo
data:image/png;base64,. - Cabeçalhos e tokens que precisam trafegar sem caracteres problemáticos.
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.
- Use
base64ToStringquando o conteúdo é texto, ebase64ToBinaryquando é um arquivo que você vai enviar ou gravar, como um PDF. - A Microsoft indica usar
base64ToStringno lugar dedecodeBase64, que está obsoleta. - A documentação informa que o Logic Apps pode converter automaticamente em alguns casos, sem precisar das funções, e que, ao inserir essas funções no designer, a exibição pode mudar. Isso afeta só a visualização da função, não o efeito. Confira a nota completa na página da Microsoft.
- Se o conteúdo vier em Base64URL, como o payload de um JWT, troque
-por+e_por/, e complete o=no final antes de decodificar. Não afirmamos aqui que a função aceite a variante URL diretamente: teste com um valor seu.
O que usar para proteger de verdade
A escolha depende do que você precisa garantir:
- Sigilo do conteúdo: criptografia de verdade, com chave. Em trânsito, HTTPS. Em repouso, a criptografia do serviço que guarda os dados.
- Segredos de fluxos e aplicativos (senhas, chaves de API): um cofre de segredos ou o mecanismo de variáveis seguras da plataforma, em vez de texto em variáveis comuns. Confira os recursos disponíveis no seu ambiente.
- Integridade (o arquivo não foi alterado): um hash do conteúdo, comparado com o valor esperado. Veja a ferramenta de hash.
- Autenticidade (quem emitiu): assinatura digital ou a verificação da assinatura do token, que a decodificação do JWT não faz.
- Senhas de usuários: algoritmo de hash próprio para senhas, com sal, nunca Base64.
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
- Se o texto parece embaralhado e termina com
=ou==, provavelmente é Base64: decodifique antes de achar que é criptografia. - Se é um segredo, tire do Base64 e mude a senha se ela já circulou assim.
- Se precisa enviar arquivo em JSON, use Base64 e conte 33% a mais no limite de tamanho.
- Se contém
-e_e começa comeyJ, é 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.