2013-03-19 237 views
16

GNU/Linuxでbase64ファイルをデコードしようとすると、 "base64:invalid input"が表示されます。デコード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. 
+0

少なくとも私のシステムでは、 '-d'ではなく、' -D'でデコードするのです。 'base64 --help'はあなたのシステムで何を言いますか? –

+0

アップグレードを検討してください。現在のバージョンは少なくとも8.20(2012年以降)であり、おそらくより新しいものです。 –

+0

そのバージョンはCentOS 5.xがインストールするバージョンなので、環境を管理する人によってはオプションがないかもしれません。 – Joe

答えて

37

はバージョンが区切りと行(デフォルトで)デコードしないことを、まだエンコーダがデフォルトであることありません。 (新しいバージョンではこの問題は発生しません。)

一つの解決策:

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)