Decode base64: недопустимый ввод
Попытка декодировать файл base64 на GNU/Linux, я получаю "base64: недопустимый ввод".
$ base64 test.zip | base64 -d > test2.zip
base64: invalid input
$ ll test*
-rw-r--r-- 1 user grp 152 19 11:41 test.zip
-rw-r--r-- 1 user grp 57 19 11:42 test2.zip
Я попробовал dos2unix, но это не помогло.
Моя версия base64:
$ base64 --version
base64 (GNU coreutils) 5.97
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software. You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.
Written by Simon Josefsson.
Ответы
Ответ 1
Эта версия не будет декодировать (по умолчанию) строки с разделителями, но по умолчанию этот кодер делает это. (У более новых версий эта проблема отсутствует.)
Одно решение:
base64 -w 0 foo.zip | base64 -d > foo2.zip
Альтернативные
base64 foo.zip | base64 -di > foo2.zip
Опция -i
означает (со страницы man
):
-i, --ignore-garbage
When decoding, ignore non-alphabet characters.
[...]
Decoding require compliant input by default, use --ignore-garbage to
attempt to recover from non-alphabet characters (such as newlines)