读书人

小弟我使用过的Linux命令之base64 - 用

发布时间: 2012-08-11 20:50:31 作者: rapoo

我使用过的Linux命令之base64 - 用base64编解码
我使用过的Linux命令之base64 - 用base64编解码

本文链接:http://codingstandards.iteye.com/blog/934928? (转载请注明出处)

用途说明

base64是一种常用的简单的编解码方式。以下内容摘自维基百科。

?

将字符串str+换行编码为base64字符串输出。

?

格式:echo -n "str" | base64

将字符串str编码为base64字符串输出。注意与上面的差别。(2011.08.01 补充)

?

格式:base64 file

从指定的文件file中读取数据,编码为base64字符串输出。

?

格式:base64 -d

从标准输入中读取已经进行base64编码的内容,解码输出。

?

格式:base64 -d -i

从标准输入中读取已经进行base64编码的内容,解码输出。加上-i参数,忽略非字母表字符,比如换行符。

将base64编码的字符串str+换行解码输出。

?

格式:echo -n "str" | base64 -d

将base64编码的字符串str解码输出。注意与上面的差别。(2011.08.01 补充)

?

格式:base64 -d file

从指定的文件file中读取base64编码的内容,解码输出。

?

使用示例示例一

[root@web ~]# base64
hello
Ctrl+DaGVsbG8K
[root@web ~]#

[root@web ~]#
[root@web ~]# base64 -d
aGVsbG8K
Ctrl+Dhello
base64: invalid input
[root@web ~]#

你会发现,base64命令会输出 base64: invalid input,似乎它把按Ctrl+D后的空行也作为输入来处理了。

?

[root@web ~]# echo "hello" | base64
aGVsbG8K
[root@web ~]# echo "aGVsbG8K" | base64 -d
hello
base64: invalid input
[root@web ~]# echo -n "aGVsbG8K" | base64 -d
hello
[root@web ~]#

使用echo输出字符串时,如果没有-n参数会自动添加换行符,这会令base64命令发晕。

网上有些文章说到了这个事情。

?

示例二

[root@web ~]# cat >1.txt
hello
world

Ctrl+D
[root@web ~]# base64 1.txt
aGVsbG8Kd29ybGQK
[root@web ~]# base64 1.txt >2.txt
[root@web ~]# base64 -d 2.txt
hello
world
base64: invalid input
[root@web ~]#

?

示例三

[root@node56 lic]# base64
CTMW4INTEL,000000000000,20110901,1,1,6h7nrd147i91a

Ctrl+D
Q1RNVzRJTlRFTCwwMDAwMDAwMDAwMDAsMjAxMTA5MDEsMSwxLDZoN25yZDE0N2k5MWEK
[root@node56 lic]# echo "Q1RNVzRJTlRFTCwwMDAwMDAwMDAwMDAsMjAxMTA5MDEsMSwxLDZoN25yZDE0N2k5MWE=" | base64 -d
CTMW4INTEL,000000000000,20110901,1,1,6h7nrd147i91abase64: invalid input
[root@node56 lic]# echo "Q1RNVzRJTlRFTCwwMDAwMDAwMDAwMDAsMjAxMTA5MDEsMSwxLDZoN25yZDE0N2k5MWE=" | base64 -d -i
CTMW4INTEL,000000000000,20110901,1,1,6h7nrd147i91a[root@node56 lic]#

[root@node56 lic]# echo -n "Q1RNVzRJTlRFTCwwMDAwMDAwMDAwMDAsMjAxMTA5MDEsMSwxLDZoN25yZDE0N2k5MWE=" | base64 -d
CTMW4INTEL,000000000000,20110901,1,1,6h7nrd147i91a[root@node56 lic]#
注意上面几种不同使用方式输出信息的差别。
[root@node56 lic]#
[root@node56 lic]# echo "CTMW4INTEL,000000000000,20110901,1,1,6h7nrd147i91a" | base64
Q1RNVzRJTlRFTCwwMDAwMDAwMDAwMDAsMjAxMTA5MDEsMSwxLDZoN25yZDE0N2k5MWEK
[root@node56 lic]# echo -n "CTMW4INTEL,000000000000,20110901,1,1,6h7nrd147i91a" | base64
Q1RNVzRJTlRFTCwwMDAwMDAwMDAwMDAsMjAxMTA5MDEsMSwxLDZoN25yZDE0N2k5MWE=

注意-n参数的处理结果的差别。

?

问题思考

1. 怎么解释base64: invalid input这样的问题?看来只有看看它的源代码了。

?

相关资料

【1】维基百科 Base64

【2】RFCS? RFC 3548 - The Base16, Base32, and Base64 Data Encodings

【3】中国IT实验室 Linux下"base64"命令工具的使用

【4】LANPICE的鬼屋 Linux下利用base64破解Rayfile专用链

?

返回 我使用过的Linux命令系列总目录

?

1 楼 superlittlefish 2011-07-26 在介绍命令的时候如果介绍命令的典型应用场景的话,感觉会更好.
很多人了解参数的含义, 却不知道这个命令什么时候用 2 楼 superlittlefish 2011-07-26 另外发现点击'顶' ,无效. 3 楼 codingstandards 2011-07-26 superlittlefish 写道在介绍命令的时候如果介绍命令的典型应用场景的话,感觉会更好.
很多人了解参数的含义, 却不知道这个命令什么时候用
这个建议不错,谢谢支持!

读书人网 >UNIXLINUX

热点推荐