Есть ли в Mac OS X команда терминала, которая будет base64 кодировать файл или стандартный ввод?
macos
command-line
encoding
base64
мистифицировать
источник
источник
base64 -d
или вbase64 -D
зависимости от вашей операционной системы. OSX использует-D
.openssl
флагом для декодирования-d
на OS X (10.10 Yosemite).Ответы:
openssl
может сделать это для вас, и все это установлено с OS X по умолчанию; нет необходимости устанавливать darwinports.Без
-in
опции читает из стандартного вводаисточник
openssl base64 < path/to/file.png | tr -d '\n' | pbcopy
или,cat path/to/file.png | openssl base64 | tr -d '\n' | pbcopy
чтобы пропустить запись в файл и просто скопировать вывод в кодировке base64 в буфер обмена без разрывов строк.-d
флаг для декодирования.openssl base64 -e <<< ram
и декодировать:openssl base64 -d <<< cmFtCg==
openssl base64 [-e] -A
не делали . + @kenny при декодировании, если во вводе нет новой строки через каждые 76 символов, включая случай отсутствия новой строки, который я только что заявил, вам нужно,-d -A
или вы получите пропущенные или поврежденные данные без сообщения об ошибке (хотя есть ожидающий отчет об ошибке, который может привести к решению этой проблемы).openssl base64 -e <<< ram
фактически кодирует 4 байта, включая перевод строки в конце; смhexdump <<< ram
.Openssl можно использовать более кратко:
[echo -n -> необходимо использовать, иначе будет выполнено кодирование, включая символ новой строки]
или же
источник
openssl base64 <<< input
base64
безopenssl
. В любом случае мне нужно дважды нажать Ctrl + D. И будьте осторожны, @Garret: в Bash, с или безopenssl
,openssl base64 <<< superuser
иopenssl base64 <<< "superuser"
ошибочно возвращаютсяc3VwZXJ1c2VyCg==
, поскольку «здесь строка» тогда все еще включает перевод строки! ( Очевидно, не только в Bash, но также в zsh, ksh и yash. Смhexdump <<< superuser
. Результат Base64 должен бытьc3VwZXJ1c2Vy
.)echo -n
является предпочтительным, если вам не нужен перевод строки. Это, безусловно, что-то, о чем нужно знать.printf
вместоecho -n
Попробуйте использовать:
Это должно быть доступно по умолчанию на OS X.
источник
--decode
чтобы полностью изменить процесс от base64 к нормальному.openssl base64
. Спасибо!base64
команда доступна по умолчанию на моем OS X 10.9.4.Вы можете использовать
base64 <<< string
иbase64 -D <<< string
для кодирования и декодирования строки в терминале, илиbase64 -in file
иbase64 -D -in file
для кодирования и декодирования файла.источник
Invalid characer in input stream
при использовании<<<
... Я пытался с"
,'
и ничего вокруг строки.Поскольку Python поставляется с OS X по умолчанию, вы можете использовать его, как показано ниже:
Или установите
coreutils
через Brew (brew install coreutils
), которая будет предоставлятьbase64
команду:источник
В macOS я всегда использую:
echo -n "STRING" | base64
-n - избегать символа новой строки в конце строки.
источник
С точки зрения скорости, я бы использовал openssl, за которым следует perl, а затем uuencode. С точки зрения переносимости, я бы использовал uuencode, за которым следует Perl, за которым следует openssl (если вы хотите повторно использовать код на как можно большем количестве других UNIX-подобных платформ). Будьте осторожны, поскольку не все варианты UNIX поддерживают ключ -m (iirc AIX поддерживает, HP / UX поддерживает Solaris).
Используйте ключ -m для uuencode file_in.txt для base64, как указано в RFC1521, и запишите его в filename.b64 (с filename_when_uudecoded.txt в качестве имени файла по умолчанию при декодировании):
Пример STDIN:
источник
Вы также можете передать его прямо в буфер обмена (по крайней мере, на Mac):
openssl base64 -in [filename] | pbcopy
источник
base64 < [filename] | pbcopy
питон
В настоящее время Python предустановлен на всех Mac.
В терминале запустить
python
(или ipython ).Кодировать файл:
Декодировать файл:
Конечно, обе операции могут быть преобразованы в простой, но таким образом это более читабельно.
OpenSSL
Пропуск
-out
/-output... filename
будет печатать на стандартный вывод.base64
Еще одна утилита ootb, представленная как в OSX, так и в Ubuntu:
источник
Где имя - это имя, отображаемое в закодированном заголовке.
Пример:
или же
источник
uuencode
это не кодировка какbase64
По какой-то причине,
echo -n <data> | openssl base64
добавил новую строку в середине моих данных base64. Я предполагаю, что это потому, что мои данные base64 были очень длинными.Использование
echo -n <data> | base64
для кодирования иecho -n <base64-ed data> | base64 -D
декодирования работало нормально.источник
В дополнение к ответу Стива Фолли, приведенному выше, при шифровании в режиме stdin, чтобы избежать пропуска дополнительных новых строк, дважды нажмите CTRL + D, чтобы завершить ввод без каких-либо дополнительных новых строк. Вывод будет показан сразу после той же строки.
Например:
В качестве альтернативы вы можете использовать
printf
:источник
Есть Perl плюс MIME :: Base64:
Это предустановлено. Вы можете указать отдельные файлы в командной строке (или предоставить данные на стандартный ввод); каждый файл кодируется отдельно. Вы также можете сделать:
Это создает резервную копию file1 в file1.txt и записывает выходные данные в кодировке Base-64 поверх исходного файла.
источник
Простая версия NodeJS:
источник
openssl
(и сейчасbase64
) идут с ОС.перекодировать должен сделать трюк для вас
перекодировка доступна для OS X через MacPorts .
источник
base64
команда.Если вы кодируете файл шрифта base64, вы можете сделать это:
Я использую это на Mac (10.10) все время.
Примечание : не будет разрывов строк.
источник
Кроссплатформенные решения
Мы составили список кроссплатформенных команд оболочки для кодирования файла как base64. Следующие команды принимают входной файл (названный
deploy.key
в примерах) и преобразуют его в base64 без переноса новой строки. Вывод base64 выводится на терминал через стандартный вывод.Чтобы перенаправить вывод в файл, добавьте
> base64-encoded.txt
(используя выбранное вами имя файла).Эти команды были созданы прототипом в рамках этого запроса на извлечение, в котором мы хотели, чтобы кроссплатформенные команды оболочки кодировали в base64 закрытый ключ SSH для удаления новых строк.
источник