Шпаргалка по кодированию и декодированию Base64: примеры команд для Windows, Linux и Mac

Кодирование и декодирование файлов в Base64 на Windows, Linux и Mac.

Содержимое страницы

Это шпаргалка показывает, как кодировать и декодировать файлы и строки в Base64 из командной строки на Windows, Linux и macOS — без необходимости установки дополнительных инструментов.

бородатый мужчина пишет сложный код ночью

Это руководство является частью Инструменты разработчика: Полное руководство по современным рабочим процессам.

Base64 преобразует бинарные данные в ASCII-текст, используя 64 символа (A–Z, a–z, 0–9, +, /). Он широко используется для кодирования учетных данных в HTTP Basic Auth, полезной нагрузки JWT (см. Декодирование и вывод токена JWT), секретов Kubernetes, URI данных в HTML/CSS, а также для внедрения бинарных данных в JSON или переменные окружения. Использование командной строки позволяет хранить конфиденциальные данные локально и автоматизировать процессы в конвейерах CI/CD.

Кодирование и декодирование Base64 в Windows

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

Использование командной строки с Certutil

  1. Откройте командную строку.

  2. Кодирование файла в Base64:

    certutil -encode input.bin output.b64
    

    Замените input.bin на путь к вашему файлу, а output.b64 — на желаемое имя выходного файла.

  3. Чтобы вывести Base64 в консоль без сохранения временного файла:

    certutil -encode input.bin tmp.b64 && findstr /v /c:- tmp.b64 && del tmp.b64
    

    Команда findstr /v /c:- удаляет строки -----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----, добавляемые certutil.

Декодирование Base64 в Windows (Certutil)

certutil -decode encoded.b64 decoded.bin

Кодирование и декодирование с помощью PowerShell

Кодирование файла:

[Convert]::ToBase64String([System.IO.File]::ReadAllBytes("C:\path\to\file.bin"))

Кодирование строки (UTF-8):

[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("Hello, World!"))
# Вывод: SGVsbG8sIFdvcmxkIQ==

Декодирование Base64 в строку:

[System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("SGVsbG8sIFdvcmxkIQ=="))
# Вывод: Hello, World!

Декодирование Base64 в файл:

[System.IO.File]::WriteAllBytes("decoded.bin", [Convert]::FromBase64String((Get-Content encoded.b64 -Raw)))

Эти методы работают без установки дополнительного программного обеспечения. Для получения更多信息 об автоматизации оболочки см. Шпаргалку по PowerShell.

Кодирование и декодирование Base64 в Linux

Команда base64 предустановлена на большинстве дистрибутивов Linux (GNU coreutils).

Базовый синтаксис

base64 [ОПЦИИ] [ФАЙЛ]

Если файл не указан или указан как -, данные читаются из стандартного ввода.

Кодирование файла в Base64

base64 input_file > output_file

Пример:

base64 myfile.txt > encoded.txt

Чтобы вывести закодированное содержимое в терминал:

base64 myfile.txt

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

echo -n "Hello, World!" | base64
# Вывод: SGVsbG8sIFdvcmxkIQ==

Используйте -n с echo, чтобы избежать добавления конца строки. Для декодирования строк в JWT см. Декодирование и вывод токена JWT.

Отключение переноса строк (-w 0)

По умолчанию base64 переносит вывод каждые 76 символов. Для использования в JSON, переменных окружения, URL или функции base64encode в Terraform, отключите перенос:

base64 -w 0 input_file > output_file

Декодирование Base64 в Linux

base64 -d encoded_file > decoded_file
# или
base64 --decode encoded_file > decoded_file

Пример:

echo "SGVsbG8sIFdvcmxkIQ==" | base64 -d
# Вывод: Hello, World!

Альтернатива: OpenSSL

echo -n "data" | openssl base64 -e
echo "ZGF0YQ==" | openssl base64 -d

Для получения更多信息 о командных рабочих процессах см. Шпаргалку по Bash, которая охватывает конвейеры и скрипты.

Кодирование и декодирование Base64 в macOS

macOS включает команду base64, аналогичную Linux, но для ввода из файла требуется флаг -i.

Кодирование файла в Base64

base64 -i input_file > output_file

Пример:

base64 -i myfile.txt > encoded.txt

Чтобы вывести в терминал:

base64 -i myfile.txt

Кодирование и копирование в буфер обмена

base64 -i input_file | pbcopy

Декодирование Base64 в macOS

base64 -D -i encoded_file > decoded_file

Флаг -D включает режим декодирования; -i указывает входной файл. Эти команды работают на всех современных версиях macOS начиная с 10.7.

Справочник команды base64 для Linux

Полный вывод справки для инструмента GNU base64:

$ base64 --help

Использование: base64 [ОПЦИИ]... [ФАЙЛ]
Кодирование или декодирование ФАЙЛ (или стандартного ввода) в стандартный вывод.

Без ФАЙЛ или когда ФАЙЛ является -, чтение из стандартного ввода.

Обязательные аргументы для длинных опций обязательны и для коротких опций.
  -d, --decode          декодировать данные
  -i, --ignore-garbage  при декодировании игнорировать символы, не входящие в алфавит
  -w, --wrap=COLS       перенос закодированных строк после COLS символов (по умолчанию 76).
                          Используйте 0 для отключения переноса строк
      --help        отобразить эту справку и выйти
      --version     вывести информацию о версии и выйти

Данные кодируются в соответствии с алфавитом base64, описанным в RFC 4648.
При декодировании входные данные могут содержать переносы строк в дополнение к байтам
формального алфавита base64. Используйте --ignore-garbage для попытки восстановления
от любых других байтов, не входящих в алфавит, в закодированном потоке.
...

Распространенные случаи использования

Случай использования Команда / подход
Заголовок/полезная нагрузка JWT Декодирование с помощью base64 -d или jq — см. Декодирование и вывод токена JWT
HTTP Basic Auth echo -n "user:pass" | base64 -w 0 для Authorization: Basic <результат>
Секрет Kubernetes kubectl create secret generic mysecret --from-literal=key=$(base64 -w 0 file.bin)
cURL с Basic Auth Используйте -u user:pass или -H "Authorization: Basic $(echo -n user:pass | base64 -w 0)" — см. Шпаргалку по cURL
Data URI в HTML data:image/png;base64,$(base64 -w 0 image.png)

Полезные ссылки