Кодирование — это процесс, используемый для преобразования данных в формат, необходимый для эффективной передачи или хранения. Напротив, декодирование противоположно методу кодирования, который преобразует закодированные данные обратно в исходный формат. Base64 — это процесс кодирования, при котором двоичные данные преобразуются в ASCII. Кодирование Base64 в основном требуется, чтобы избежать проблем с передачей, возникающих при передаче двоичных данных в текстовые системы, которые не могут правильно обрабатывать двоичные данные. В результате информация теряется или искажается при передаче.
Некоторые из применений кодирования:
- Сжатие данных
- Скрытие данных
- Передача данных в другом формате
Для кодирования данных 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 для кодирования и декодирования строки или файла из командной строки. Результаты можно вывести на стандартный вывод, сохранить в переменной или файле или передать по сети в другую программу. Однако помните, что кодирование не похоже на шифрование, и можно легко раскрыть закодированные данные, поэтому не рекомендуется использовать кодирование для передачи конфиденциальных данных, если они также не зашифрованы.