2013-03-19 16 views
16

Beim Versuch, Base64-Datei unter GNU/Linux zu dekodieren, bekomme ich "base64: ungültige Eingabe".decode base64: ungültiger Eingang

$ 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 

versuchte ich dos2unix Befehl, aber es half nicht.

Meine base64 Version:

$ 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

Auf meinem System ist es mindestens "-D" zu dekodieren, nicht "-d". Was sagt 'base64 --help' auf deinem System? –

+0

In Betracht ziehen, zu aktualisieren; die aktuelle Version ist mindestens 8.20 (ab 2012) und wahrscheinlich noch aktueller. –

+0

Diese Version wird von CentOS 5.x installiert. Je nachdem, wer die Umgebung steuert, hat er möglicherweise keine Option. – Joe

Antwort

37

Diese Version wird nicht entschlüsseln (standardmäßig) Linien mit Separatoren, doch der Encoder macht das standardmäßig aktiviert. (Neuere Versionen haben dieses Problem nicht.)

Eine Lösung:

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

Alternative:

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

Die -i Option steht für (von der man Seite):

-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)