Кодирование и декодирование Base64 из командной строки

Кодирование — это процесс, используемый для преобразования данных в формат, необходимый для эффективной передачи или хранения. Напротив, декодирование противоположно методу кодирования, который преобразует закодированные данные обратно в исходный формат. Base64 — это процесс кодирования, при котором двоичные данные преобразуются в ASCII. Кодирование Base64 в основном требуется, чтобы избежать проблем с передачей, возникающих при передаче двоичных данных в текстовые системы, которые не могут правильно обрабатывать двоичные данные. В результате информация теряется или искажается при передаче.

Некоторые из применений кодирования:

  1. Сжатие данных
  2. Скрытие данных
  3. Передача данных в другом формате

Для кодирования данных Base64 использует только алфавит, число и символ =. Например, c2FtcGxlCg== является допустимыми закодированными данными, а b?HV3.Zh2J== не является допустимыми закодированными данными.

В этой статье мы объясним, как использовать команду base64 для кодирования и декодирования данных в строке или файле. Мы выполнили команды в системе Ubuntu 20.04 Focal Fossa. Однако вы также можете запускать те же команды в других дистрибутивах Linux.

Синтаксис Base64

Вот синтаксис кодирования с использованием Base64:

base64 [OPTION] [FILE]

Опции

Вот некоторые из параметров командной строки, которые можно использовать с командой base64:

-d or --decode

Используйте эту опцию для декодирования файла или строки.

--help

Используйте эту опцию для отображения справки по использованию base64.

-i, --ignore-garbage

Используйте этот параметр при декодировании, чтобы игнорировать неалфавитные символы.

Используйте эту опцию, чтобы отобразить информацию о версии

Строка кодирования

Вы можете легко закодировать строку с помощью команды base64. Например, чтобы закодировать образец текста «Добро пожаловать в Linux» в base64, команда будет выглядеть так:

echo “Добро пожаловать в Linux” | base64
Terminal Output:

andreyex@hp34:~$ echo "Добро пожаловать в Linux" | base64

V2VsY29tZSB0byBMaW51eAo=

Эта команда закодирует текст в строке с использованием base64 и напечатает закодированный текст в стандартный вывод, как показано выше в выводе терминала.

Вы также можете сохранить закодированный вывод в файл, а не печатать в стандартный вывод, используя оператор перенаправления (>). Следующая команда закодирует текст и сохранит вывод в файл с именем «encodedfile.txt:

echo “Добро пожаловать в Linux” | base64 > encodedfile.txt

Чтобы просмотреть закодированный файл, вы можете использовать команду cat:

cat encodedfile.txt
Terminal Output:

andreyex@hp34:~$ cat encodedfile.txt

4oCcV2VsY29tZSB0byBMaW51eOKAnQo=

Строка декодирования

Вы также можете декодировать текст в кодировке base64, используя параметр –decode или -d. Например, для декодирования закодированного в base64 текста «V2VsY29tZSB0byBMaW51eAo=» команда будет выглядеть так:

echo  4oCcV2VsY29tZSB0byBMaW51eOKAnQo| base64 --decode

Эта команда декодирует текст в кодировке base64 и печатает исходный текст на стандартном выводе, как показано в следующем выводе терминала.

Terminal Output:

andreyex@hp34:~$ echo  4oCcV2VsY29tZSB0byBMaW51eOKAnQo= | base64 --decode

“Welcome to Linux”

Кодирование текстового файла

Команду base64 также можно использовать для кодирования текстового файла. Для этого примера давайте сначала создадим текстовый файл с некоторым содержимым, используя эту команду на терминале, или используем любой текстовый файл.

echo """Я люблю Linux

Я люблю Linux

Я люблю Linux

andreyex - это моя домашняя страница""" > testfile.txt

Чтобы закодировать этот или любой текстовый файл с именем «testfile.txt», команда будет выглядеть так:

base64 testfile.txt

Эта команда закодирует указанный текстовый файл и напечатает его закодированную форму на стандартном выходе, как показано в следующем выводе терминала:

andreyex@hp34:~$ base64 testfile.txt

SSBMb3ZlIExpbnV4CkkgTG92ZSBMaW51eApJIExvdmUgTGludXgKTGludXhIaW50IGlzIG15IGhv

bWVwYWdlCg==

Вы также можете сохранить закодированный вывод в файл, а не печатать в стандартный вывод, используя оператор перенаправления (>). Следующая команда преобразует текст в файл с использованием base64 и сохраняет вывод в другой файл с именем «encodedfile.txt». Команда ничего не выводит на экран.

base64 testfile.txt > encodedfile.txt

Чтобы просмотреть закодированный файл, вы можете использовать команду cat:

cat encodedfile.txt
Terminal Output:

andreyex@hp34:~$ base64 testfile.txt > encodedfile.txt

andreyex@hp34:~$ cat encodedfile.txt

SSBMb3ZlIExpbnV4CkkgTG92ZSBMaW51eApJIExvdmUgTGludXgKTGludXhIaW50IGlzIG15IGhv

bWVwYWdlCg==

Декодирование текстового файла

Чтобы декодировать закодированный текстовый файл, используйте параметр –decode или -d. Например, для декодирования закодированного в base64 текстового файла «encodedfile.txt» команда будет выглядеть так:

base64 -d encodedfile.txt

Эта команда декодирует текстовый файл в кодировке base64 и печатает исходный текст на стандартном выходе, как показано в следующем выводе терминала:

Terminal Output:

andreyex@hp34:~$ base64 -d encodedfile.txt

Я люблю Linux

Я люблю Linux

Я люблю Linux

andreyex - это моя домашняя страница

andreyex@hp34:~$

Кодирование пользовательского ввода

Используя кодировку base64, мы можем кодировать любые предоставленные пользователем данные. Для этой цели нам потребуется создать сценарий, который будет принимать пользовательский ввод, кодировать его с использованием кодировки base64 и выводить закодированные данные на стандартный вывод. Создайте скрипт «test.sh» со следующим кодом:

#!/bin/bash

# Печатать сообщение с запросом ввода

echo "Предоставить некоторые данные для кодирования"

# Сохранение ввода в переменную с именем "data"

read data

# Кодирование с использованием кодировки base64 и сохранение вывода в переменной "encod_data"

encod_data=`echo -n $data | base64`

# Напечатать закодированный вывод

echo "Encoded text is : $encod_data"
Запустите скрипт следующим образом:

 

chmod 755 test.sh; ./test.sh

После запуска скрипта вам будет предложено ввести данные, которые вы хотите закодировать. Введите некоторые данные и нажмите Enter, и вы получите закодированный вывод на экране, как показано ниже:

Terminal Output:

andreyex@hp34:~$ chmod 755 test.sh; ./test.sh

Provide Some data to encode

Я люблю Linux

Encoded text is : SSBsb3ZlIGxpbnV4

Этот закодированный текст можно отправить через Интернет или в другую программу, а затем расшифровать позже с помощью простой команды. Для этой команды мы предполагаем, что принимающая программа decode.sh поместила закодированные данные в переменную BASH с именем RECEIVED_ENCODING .

#!/bin/bash

RECEIVED_ENCODING=SSBsb3ZlIGxpbnV4

RECEIVED_STRING=`echo  $RECEIVED_ENCODING | base64 --decode`

echo $RECEIVED_STRING

Здесь вы можете увидеть результаты работы принимающей программы в выводе терминала:

andreyex@hp34:~$ chmod 755 decode.sh ; ./decode.sh

Я люблю Linux

Вывод

Вот как вы можете использовать base64 для кодирования и декодирования строки или файла из командной строки. Результаты можно вывести на стандартный вывод, сохранить в переменной или файле или передать по сети в другую программу. Однако помните, что кодирование не похоже на шифрование, и можно легко раскрыть закодированные данные, поэтому не рекомендуется использовать кодирование для передачи конфиденциальных данных, если они также не зашифрованы.