Base64 - Como encodar?

Estou usando o Xubuntu 20.04. Mas no terminal não aparece mais a opção para “Encodar” algum arquivo pelo comando base64 (vide base64 --help).
Se não meengano na LTS passada ainda existia o comendo -e ou --encode para isso. Mas não vejo nessa versão.

Sabem de algum comando para que possa encodar pelo terminal algum arquivo?

1 Curtida

O base64 não é usado para esconder o conteúdo de um aquivo.
Para isso existe criptografia este sim esconde conteúdo de arquivo para que as outras pessoas não possam obter o conteúdo.
Use o ccrypt para instalar:
$ sudo apt-get install ccrypt
Para usar:
Usage: ccrypt [mode] [options] [file…]

Eu não sei porque seu base64 não esta funcionando.

O próprio base64, ele foi projetado para trabalhar com stream ou seja, pegando a saída de outro comando. Sendo assim você precisa de um comando auxiliar como por exemplo o echo:

echo -n "Seu texto" | base64

O -n é necessário por que o echo por padrão adiciona uma quebra de linha \n ao final do texto passado


Pelo que eu entendi ele quer apenas codificar um arquivo, isso é útil por exemplo caso o que ele vai usar aceite apenas caracteres ANSI

Se ele for enviar um arquivo binário por mensagem de celular né.
Eu acredito que ele quer esconder o conteúdo de um arquivo se ele fosse enviar para alguém um e-mail com anexo seria bem melhor.

O que gostaria é mesmo, tipo: pegar uma imagem PNG e transforma-la em base64 para usar dentro de um arquivo HTML por exemplo.

cat image.png | base64
ou (sem o UUOC)
base64 <image.png

Em seguida, use o protocolo data como SRC da imagem:

<img src="data:image/png;base64,ABCDEF..." />
1 Curtida

Nesse caso use:

echo "data:image/png;base64,"$(cat "arquivo.png" | base64)

Explicação:

  • "data:image/png;base64," é diz o que está sendo incluido, no caso uma imagem (image) no formato PNG (/png), codificada como base64 (;base64,)

  • $(...) diz pro shell, execute o comando entre os parêntesis e retorne a saída (stdout) dele

  • cat "arquivo.png" significa pegue o conteúdo do arquivo (cat vem de catch, que significa pegar), “arquivo.png”

  • | significa redirecione a saída do comando a esquerda (o cat…) e passe como entrada padrão (stdin) do comando a direita (base64)

  • base64 faz a codificação para base64


Esse comando retorna a saída pro terminal então pode ser meio inútil pra vc, pra ter algo mais útil vc pode redirecionar a saída para um arquivo:

echo "data:image/png;base64,"$(cat "imagem.png" | base64) > "imagem.png.base64"

No HTML basta você colocar o conteúdo do arquivo “imagem.png.base64”. Por exemplo:

<img src="[conteúdo do arquivo imagem.png.base64]"/>
1 Curtida

Embutir num HTML, num banco de dados, num arquivo rc… tem infinitas possibilidades pra isso

1 Curtida