Как я могу декодировать строку base64 из командной строки?

У меня были те же симптомы, хотя и с другой настройкой. (См. Внизу.) Теперь это исправлено. Ключ должен был отключить коммутатор приложений Unity и снова включить статический коммутатор compiz (часть пакета compiz-plugins).

Предупреждение - вы можете испортить свой рабочий стол, делая это. Не пытайтесь, когда есть вероятность, что вы случайно нажмете на неправильную вещь (из-за использования дорожки для ноутбука или (как и я), имеющих малышей, которые могут случайно размять ваши ключи, прежде чем вы сможете их остановить). Не пытайтесь, если вы не можете зафиксировать запертую машину, если все пойдет не так. Пусть покупатель будет бдителен. См.: Каковы некоторые из проблем с CCSM и почему я должен его избегать?

Вот шаги, которые я предпринял:

sudo apt-get install compizconfig-settings-manager compiz-plugins Alt + F2 , Тип ccsm Отключить сочетания клавиш для переключателя Unity, сняв галочку с помощью следующих флажков в диспетчере настроек CompizConfig ▸ Desktop ▸ Ubuntu Unity Plugin ▸ Switcher: клавиша для запуска коммутатора ▸ клавиша Enabled для запуска переключателя в обратном направлении ▸ Включенный ключ для запуска коммутатор для всех видовых экранов ▸ Включенная клавиша для запуска переключателя в обратном направлении для всех видовых экранов ▸ Включено Включить статический коммутатор приложений, проверив Диспетчер настроек CompizConfig ▸ Управление окнами ▸ Статический коммутатор приложений ▸ Включить статический коммутатор приложений Не должно быть конфликтов, если я вспомнил все они должны были решить. Однако, если есть ключевые конфликты, удалите его для единственного плагина. Была довольно задержка (30 секунд-1 минута), в течение которой моя машина не реагировала, когда включен статический коммутатор. Не нажимайте ни на что в это время, клики будут кэшироваться и воспроизводиться.

Мой ответ в ответе на принятый ответ: Как вернуть поведение Alt-tab для переключения между окнами в текущем рабочем пространстве?

Разница в моей настройке было то, что я вручную установил Eclipse Indigo / Java EE (с моим собственным файлом .desktop) и не установил Py / Dev, но у меня были те же проблемы - никаких броузеров в Unity launcher, а Eclipse не появлялся в Alt-tab - единственный способ переключиться на него - это Super-W.

1
задан 2 August 2015 в 12:03

6 ответов

openssl также может кодировать и декодировать base64

$ openssl enc -base64 <<< 'Hello, World!'
SGVsbG8sIFdvcmxkIQo=
$ openssl enc -base64 -d <<< SGVsbG8sIFdvcmxkIQo=
Hello, World!

EDIT: пример, где строка с кодировкой base64 заканчивается на нескольких строках:

$ openssl enc -base64 <<< 'And if the data is a bit longer, the base64 encoded data will span multiple lines.'
QW5kIGlmIHRoZSBkYXRhIGlzIGEgYml0IGxvbmdlciwgdGhlIGJhc2U2NCBlbmNv
ZGVkIGRhdGEgd2lsbCBzcGFuIG11bHRpcGxlIGxpbmVzLgo=
$ openssl enc -base64 -d << EOF
> QW5kIGlmIHRoZSBkYXRhIGlzIGEgYml0IGxvbmdlciwgdGhlIGJhc2U2NCBlbmNv
> ZGVkIGRhdGEgd2lsbCBzcGFuIG11bHRpcGxlIGxpbmVzLgo=
> EOF
And if the data is a bit longer, the base64 encoded data will span multiple lines.
74
ответ дан 25 May 2018 в 07:21
  • 1
    Благодаря ответу Филиппа вам нужно добавить -A для длинных строк base64, иначе openssl ничего не вернет, см. askubuntu.com/a/271676/305568 – morloch 2 October 2014 в 11:02
  • 2
    @morloch или просто не удаляйте новые строки из кодированных данных base64, и он работает как ожидается ... – geirha 2 October 2014 в 12:56
  • 3
    Я бы не рассматривал coreutils "дополнительные" пакет, содержащий программы, такие как ls, mkdir, cp, mv и chmod. Я сомневаюсь, что вы можете сделать что-нибудь полезное с вашей машиной без него. – vidstige 16 January 2015 в 00:14
  • 4
    @vidstige, это правда. Я не знаю, почему у меня создалось впечатление, что base64 не был установлен по умолчанию; это совсем не так. – geirha 16 January 2015 в 18:26
  • 5
    Хотя это обмен стеками ubuntu, использование openssl имеет преимущество перед стандартным base64 работы в Git Bash в Windows, по крайней мере, более раннюю версию 1.8.1 Git Bash, которую я установил. – willkil 17 June 2015 в 02:05

Здесь вы идете!

Добавьте нижестоящий элемент вашего ~/.bashrc файла:

decode () {
  echo "$1" | base64 -d ; echo
}

Теперь откройте новый терминал и запустите команду.

decode QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Это будет делать именно то, что вы просили в своем вопросе.

31
ответ дан 25 May 2018 в 07:21
  • 1
    Это именно то, что мне нужно. Я думаю, что это должен быть принят ответ. – kodmanyagha 20 December 2017 в 21:11

С вашими исходными зависимостями вы можете сделать это с незначительной модификацией исходного скрипта:

echo $1 | python -m base64 -d

Если вы не передадите имя файла, этот модуль python читает со стандартного ввода , Чтобы перенести первый параметр в него, вы можете использовать echo $1 |.

18
ответ дан 25 May 2018 в 07:21

Я прокомментировал базовую командную строку base64 в http://wiki.opensslfoundation.com/index.php?title=Command_Line_Utilities. Поэтому я выдаю предупреждение при использовании opensl base64-декодирования:

 openssl base64 -e <<< 'Welcome to openssl wiki'

 V2VsY29tZSB0byBvcGVuc3NsIHdpa2kK



openssl base64 -d <<< 'V2VsY29tZSB0byBvcGVuc3NsIHdpa2kK'

Welcome to openssl wiki

warning base64 длина строки ограничена 64 символами по умолчанию в openssl:

 openssl base64 -e <<< 'Welcome to openssl wiki with a very long line
 that splits...'

 V2VsY29tZSB0byBvcGVuc3NsIHdpa2kgd2l0aCBhIHZlcnkgbG9uZyBsaW5lIHRo
 YXQgc3BsaXRzLi4uCg==

openssl base64 -d <<< 'V2VsY29tZSB0byBvcGVuc3NsIHdpa2kgd2l0aCBhIHZlcnkgbG9uZyBsaW5lIHRoYXQgc3BsaXRzLi4uCg=='

=> NOTHING! [ ! d4]

, чтобы иметь возможность декодировать линию base64 без перевода строки, которая превышает 64 символа, используется -A опция:

openssl base64 -d -A <<<
'V2VsY29tZSB0byBvcGVuc3NsIHdpa2kgd2l0aCBhIHZlcnkgbG9uZyBsaW5lIHRoYXQgc3BsaXRzLi4uCg=='

Welcome to openssl wiki with a very long line that splits...

Это в любом случае лучше, чем фактический раскол base64 приводит к 64 символам строк, поскольку -A опция BUGGY (ограничение длинными файлами).

10
ответ дан 25 May 2018 в 07:21
  • 1
    @Seth, пожалуйста, скорректируйте блоки правильно, ваше редактирование объединяет команду openssl с моими чередующимися комментариями. – philippe lhardy 24 March 2013 в 01:41
  • 2
    Ты можешь починить это? Я не могу различать эти два ... Я попробую, но вам, возможно, придется помочь мне ;-) – Seth♦ 24 March 2013 в 01:43
  • 3
    просто нужно взглянуть на wiki.opensslfoundation.com/… , где мне удалось лучше использовать синтаксис wiki (поиск в bas64 на этой странице). – philippe lhardy 24 March 2013 в 02:24

Использование perl

perl -MMIME::Base64 -ne 'printf "%s\n",decode_base64($_)' <<< "QWxhZGRpbjpvcGVuIHNlc2FtZQ=="

Или то же самое с python

python -m base64 -d <<< "QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
4
ответ дан 25 May 2018 в 07:21

Чтобы добавить еще один способ сделать это:

emacs -Q --batch  -eval '(princ (base64-encode-string (read-string ": ")))'
2
ответ дан 25 May 2018 в 07:21

Другие вопросы по тегам:

Похожие вопросы: