Base64 leva bytes como texto; não esconde segredos

Base64 é útil quando um canal de texto precisa carregar bytes. Ele muda a representação dos dados, não quem consegue entendê-los, nem garante reduzir o tamanho.

Conte bytes antes de letras

Base64 padrão com preenchimento representa cada 3 bytes com 4 caracteres e completa o grupo final com = quando necessário. Divida os bytes por 3, arredonde para cima e multiplique por 4 para obter o comprimento.

Um caractere pode ocupar mais de 1 byte UTF-8. Um texto árabe curto pode gerar mais caracteres codificados que outro latino com a mesma quantidade de letras.

Referências: RFC 4648 — Base encodings, padding and security considerations

Codificação não oferece sigilo

Quem tem o valor normalmente consegue decodificá-lo sem chave secreta. Base64 não protege senha nem esconde informação em um link compartilhado.

Trate a saída com a mesma sensibilidade da origem. Impedir a leitura exige um mecanismo de segurança adequado, não outra representação textual.

Referências: RFC 4648 — Base encodings, padding and security considerations

Saiba o que os bytes deveriam representar

Esta ferramenta codifica texto em UTF-8 e decodifica para texto UTF-8 válido. Uma imagem codificada pode ser Base64 correto e não servir para este decodificador textual.

A variante base64url usada em alguns links difere do padrão. Não adicione ou retire caracteres ao acaso para forçar aceitação; confira a variante esperada pela origem.

Referências: RFC 4648 — Base encodings, padding and security considerations

Exemplo: a quantidade de letras não define o tamanho

Hi! ocupa 3 bytes UTF-8 e vira SGkh: 4 caracteres sem preenchimento. A decodificação recupera o mesmo texto sem senha.

A palavra árabe مرحبا tem 5 letras, mas 10 bytes UTF-8. Sua codificação é 2YXYsdit2KjYpw==, com 16 caracteres. O tamanho segue os bytes; os 2 sinais = não significam que 2 letras foram apagadas.

Referências