2013-03-19 12 views
16

Próbuję odszyfrować plik base64 na GNU/Linux, otrzymuję "base64: nieprawidłowe wejście".decode base64: nieprawidłowe wejście

$ 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 

Próbowałem komendy dos2unix, ale to nie pomogło.

Moja wersja 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. 
+0

W moim systemie jest '-D' do odszyfrowania, a nie' -d'. Co mówi "base64 --help" w twoim systemie? –

+0

Rozważ modernizację; obecna wersja to co najmniej 8,20 (od 2012 r.) i prawdopodobnie jeszcze bardziej aktualna. –

+0

Ta wersja jest instalowana przez CentOS 5.x, więc w zależności od tego, kto kontroluje środowisko, może nie mieć takiej opcji. – Joe

Odpowiedz

37

Ta wersja nie będzie dekodować (domyślnie) linii z separatorami, jeszcze koder robi to domyślnie. (Nowsze wersje nie mają tego problemu.)

Jedno rozwiązanie:

base64 -w 0 foo.zip | base64 -d > foo2.zip

Alternatywny:

base64 foo.zip | base64 -di > foo2.zip

Opcja -i oznacza (od strony 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)