decode base64: invalid input

base64, linux, shell

Solution

That version will not decode (by default) lines with separators, yet the encoder does that by default. (Newer versions don't have this problem.)

One solution:

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

Alternate:

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

The `-i` option stands for (from the `man` page):

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

Problem

Trying to decode base64 file on GNU/Linux, I get "base64: invalid input". ``` $ 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 ``` I tried dos2unix command, but it did not help. My 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. ```

Original source