Linux 中 base64 命令使用方法

Linux 的 base64 命令用于 编码 / 解码文件或标准输入输出。

base64 命令详解

$ base64 --help
Usage: base64 [OPTION]... [FILE]
Base64 encode or decode FILE, or standard input, to standard output.

  -d, --decode          decode data
  -i, --ignore-garbage  when decoding, ignore non-alphabet characters
  -w, --wrap=COLS       wrap encoded lines after COLS character (default 76).
                          Use 0 to disable line wrapping

      --help     display this help and exit
      --version  output version information and exit

With no FILE, or when FILE is -, read standard input.

The data are encoded as described for the base64 alphabet in RFC 3548.
When decoding, the input may contain newlines in addition to the bytes of
the formal base64 alphabet.  Use --ignore-garbage to attempt to recover
from any other non-alphabet bytes in the encoded stream.
  • -d, –decode 解码数据
  • -i, –ignore-garbag 解码时忽略非字母字符
  • -w, –wrap = 字符数 在指定的字符数后自动换行 (默认为 76),0 为禁用自动换行
  • --help 显示此帮助信息并退出
  • --version 显示版本信息并退出

如果没有指定文件,或者文件为”-“,则从标准输入读取。

数据以 RFC 3548 规定的 Base64 字母格式进行编码。 解码时,输入数据 (加密流) 可能包含一些非有效 Base64 字符的新行字符。可以尝试用 –ignore-garbage 选项来恢复加密流中任何非 base64 字符。

字符串加密解密

加密示例:

$ echo testbase64 | base64
dGVzdGJhc2U2NAo=

解密示例:

$ echo dGVzdGJhc2U2NAo= | base64 -d
testbase64

文件内容加密

文件示例:

$ cat testfile
testbase64

给文件 file 进行 base64 编码,并打印到标准输出

$ base64 testfile
dGVzdGJhc2U2NAo=

$ cat testfile | base64
dGVzdGJhc2U2NAo=

标准输入加密

输入 testbase64,回车,然后按 Ctrl+D 结束文件输入的。

$ base64
testbase64
dGVzdGJhc2U2NAo=

如果输入 testbase64,不输入回车,连续输入两次 Ctrl+D,效果如下:

$ base64
testbase64dGVzdGJhc2U2NA==

可以发现,这个结果跟前面 cat testfile 和输入 testbase64 按回车再按 Ctrl+D 的情况是不一样的。

echo -n 选项没有输出字符串结尾的 \n 换行字符,因此字符串 testbase64 精确的 base64 编码是 dGVzdGJhc2U2NA==

$ echo -n testbase64 | base64
dGVzdGJhc2U2NA==

Java 验证

import java.util.Base64;

public static String encoder(String str) {
    return new String(Base64.getEncoder().encode(str.getBytes()));
}


public static String decode(String str) {
    return new String(Base64.getDecoder().decode(str));
}


encoder("testbase64"); // dGVzdGJhc2U2NA==
decode("dGVzdGJhc2U2NA=="); // testbase64

encoder("testbase64\n"); // dGVzdGJhc2U2NAo=
decode("dGVzdGJhc2U2NAo="); // testbase64+换行符