- 浏览: 4732550 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
bzhao:
你也应该可以这样:(not tested)./rbtunnel ...
在Bash脚本中怎么关闭文件描述符? -
bzhao:
如果有A进程原代码情况下,通过如下调用,把他的子进程继承关闭则 ...
在Bash脚本中怎么关闭文件描述符? -
Master-Gao:
楼主咋没分析下源码呢?
我使用过的Linux命令之dirname - 截取给定路径的目录部分 -
jiedushi:
tail -F 就可以吧
Linux下实时跟踪log4j日志文件的bash脚本 - 增强了tail -f的功能 -
java_is_new:
新手学习了,就是不明白为一个网卡配多个ip有什么用
我使用过的Linux命令之ifconfig - 网络配置命令
我使用过的Linux命令之base64 - 用base64编解码
本文链接:http://codingstandards.iteye.com/blog/934928 (转载请注明出处)
用途说明
base64是一种常用的简单的编解码方式。以下内容摘自维基百科。
完整的base64定义可见 RFC 1421和 RFC 2045。编码后的数据比原始数据略长,为原来的\frac{4}{3}。在电子邮件中,根据RFC 822规定,每76个字符,还需要加上一个回车换行。可以估算编码后数据长度大约为原长的135.1%。
转换的时候,将三个byte的数据,先后放入一个24bit的缓冲区中,先来的byte占高位。数据不足3byte的话,於緩衝區中剩下的bit用0补足。然后,每次取出6(因为26 = 64)个bit,按照其值选择ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/中的字符作为编码后的输出。不断进行,直到全部输入数据转换完成。
如果最後剩下兩個輸入數據,在編碼結果後加1個「=」;如果最後剩下一個輸入數據,編碼結果後加2個「=」;如果沒有剩下任何數據,就什麼都不要加,這樣才可以保證資料還原的正確性。
较高版本的Linux提供了命令行方式的base64编码和解码。
什么时候需要用到这个命令?(2011.08.01补充)
在程序中经常弄些License之类的,超过期限或者换台机器就不让使用 ,以实现对自己或公司的劳动成果进行保护 。其实就是一个加密的字符串,里面包括过期时间、功能限制、网卡MAC地址等验证信息,就可以使用base64对这样的信息简单的进行加密和解密。至少我在一些程序中就是这么用的。
常用方式
格式:base64
从标准输入中读取数据,按Ctrl+D结束输入。将输入的内容编码为base64字符串输出。
格式:echo "str" | base64
将字符串str+换行 编码为base64字符串输出。
格式:echo -n "str" | base64
将字符串str编码为base64字符串输出。注意与上面的差别。(2011.08.01 补充)
格式:base64 file
从指定的文件file中读取数据,编码为base64字符串输出。
格式:base64 -d
从标准输入中读取已经进行base64编码的内容,解码输出。
格式:base64 -d -i
从标准输入中读取已经进行base64编码的内容,解码输出。加上-i参数,忽略非字母表字符,比如换行符。
When decoding, ignore non-alphabet characters.
use --ignore-garbage to attempt to recover from non-alphabet characters (such as newlines) in the encoded stream.
格式:echo "str" | base64 -d
将base64编码的字符串str+换行 解码输出。
格式:echo -n "str" | base64 -d
将base64编码的字符串str解码输出。 注意与上面的差别。(2011.08.01 补充)
格式:base64 -d file
从指定的文件file中读取base64编码的内容,解码输出。
使用示例
示例一
[root@web ~]# base64
hello
Ctrl+D
aGVsbG8K
[root@web ~]#
[root@web ~]#
[root@web ~]# base64 -d
aGVsbG8K
Ctrl+D
hello
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用tar归档压缩文件时忽略某些文件和目录
2013-02-01 10:19 16926在Linux下,常用tar对文 ... -
使用nmap扫描服务器端口的一次操作
2012-11-01 17:00 15075使用nmap扫描服务器端口的一次操作 本文来自:http ... -
我使用过的Linux命令之wget - ooo
2011-09-14 13:10 0我使用过的Linux命令之wg ... -
推荐一篇学习Vim使用的好文:酷壳 - 简明 Vim 练级攻略
2011-09-09 12:53 9084简明 Vim 练级攻略 http://coolshell.c ... -
推荐一篇学习Vim使用的好文:酷壳 - 简明 Vim 练级攻略
2011-09-09 12:49 1简明 Vim 练级攻略 http://coolshell.c ... -
我使用过的Linux命令之:(冒号) - 啥也不做(除了……)
2011-08-29 13:18 11983我使用过的Linux命令之: ... -
我使用过的Linux命令之date - 显示、修改系统日期时间
2011-08-25 09:21 41905我使用过的Linux命令之da ... -
我使用过的Linux命令之declare - 声明shell变量(不知道没关系、知道了就更好的内建命令)
2011-08-16 09:22 21739我使用过的Linux命令之declare - 声明shell变 ... -
我使用过的Linux命令之alias - 设置命令的别名,让 Linux 命令更简练
2011-08-11 09:31 28714我使用过的Linux命令之alias - 设置命令的别名,让 ... -
我使用过的Linux命令之ar - 创建静态库.a文件
2011-08-08 10:40 51815我使用过的Linux命令之ar - 创建静态库.a文件 本 ... -
我使用过的Linux命令之crontab - 设置例行任务(类似于Windows中的任务计划)
2011-08-04 22:26 9691我使用过的Linux命令之crontab - 设置例行任务(类 ... -
我使用过的Linux命令之chmod - 改变文件/目录的访问权限
2011-08-03 21:33 10641我使用过的Linux命令之chmod - 改变文件/目录的访问 ... -
我使用过的Linux命令之export - 设置或显示环境变量
2011-08-02 19:55 25370我使用过的Linux命令之export - 设置或显示环境变量 ... -
我使用过的Linux命令之wc - 统计文件行数、单词数或字节数
2011-07-26 10:50 28932我使用过的Linux命令之wc - 统计文件行数、单词数或字节 ... -
我使用过的Linux命令之groupdel - 删除群组
2011-07-22 22:13 9620我使用过的Linux命令之gr ... -
我使用过的Linux命令之ifconfig - 网络配置命令
2011-07-21 20:43 60372我使用过的Linux命令之ifconfig - 网络配置命令 ... -
我使用过的Linux命令之ll - 列出文件/目录的详细信息
2011-07-20 21:22 7103我使用过的Linux命令之ll ... -
我使用过的Linux命令之mkdir - 创建目录
2011-07-20 20:58 13604我使用过的Linux命令之mkdir - 创建目录 本文链 ... -
我使用过的Linux命令之perror - 解释错误代码
2011-07-18 20:29 24967我使用过的Linux命令之perror - 解释错误代码 ... -
我使用过的Linux命令之ping - 测试与目标主机的连通性
2011-07-16 10:46 26256我使用过的Linux命令之ping - 测试与目标主机的连通性 ...
相关推荐
linux系统c++实现的url和base64编解码 在webserver中会使用 自己实现的一个webserver,详见https://download.csdn.net/download/k117470154/10234299
C++实现的base64编解码类,无其他依赖,兼容windows linux。 C++实现的base64编解码类,无其他依赖,兼容windows linux。
编码转换包括:Ascii 编码,Base64、Base 系列编码,Escape 编码,Hex 编码, Html entity 编码,莫尔斯电码,Quoted-printable(可打印字符引用编码),Shellcode 编码,Sql 编码,Tap Code(敲击码),Unicode ...
Base64标准编码解码,在VC6.0和Linux上调试通过
c语言写的base64编码函数和解码函数,经过严格测试,有测试代码。
base64编码解码的Linux 实现(C语言)
Windows下可以直接执行exe,也可以使用VC编译 Linux/Unix下需要./configure && make && make install三部曲编译 base64 --help查看帮助,一看就会用
Base64 De- / Encoder是Linux,Mac OS和Windows的命令行工具,可使用Base64算法进行解码和编码
BASE是一款基于PHP的可以搜索和实施安全事件的分析引擎,她的安全事件数据库来源于很多入侵检测系统...一个数据包浏览器(解码器);还可以根据时间、传感器、信号、协议和IP地址等生成状态图。 内含base-1.4.5.tar.gz
Clip_B64 该项目旨在将文件内容复制到剪贴板。 在linux / cygwin中,有一些简单的命令可以这样做: ... 结果经过base64编码,可以从剪贴板粘贴到putty-ssh远程shell窗口中,并可以使用控制台命令base64 -d解码。
主要介绍了Quoted-printable 编码介绍、Quoted-printable编码解码转换方法,需要的朋友可以参考下
Vim Base64 在Linux上使用base64在Windows上使用Python编码/解码base64字符串 注意:在此视频中, atob和btoa颠倒了!安装先决条件在Linux上,您需要安装来自coreutils base64 。 在Windows上,您需要 。旺德尔使用...
Base64编码工具 用vc6.0编译的MFC工程,带源码,其中编码、解码函数能在linux平台上使用。
xBase64:base64编码与解码C ++库
提供用于使用Base64,Base32,Base16(十六进制)或Base85 / Ascii85字符集将二进制数据编码为可打印表示形式的C函数,以及用于将此类编码数据解码回其二进制形式的等效函数。 指示 只需将所需的源文件(CyoEncode....
将二进制数据转换为纯文本的快速解决方案
从这里下载最新版本,或使用命令 git clone https://github.com/alpha1e0/pentestdb.git clone到本地 PentestDB支持Windows/Linux/MacOS,需使用python 2.6.x 或 2.7.x运行 2.1 解决lxml依赖 项目中的脚本文件...
4.2 使用Base-64 69 4.3 在网页中转换Base-36数字 71 4.4 在Perl中使用Base-36 71 4.5 使用以URL方式编码的数据 72 4.6 使用HTML实体数据 74 4.7 计算散列值 76 4.8 辨别时间格式 78 4.9 以编程方式对时间值进行编码...
| libbase64: Base64/32 编解码 | libconfig: 配置文件库 | liblog: 日志库 | libfile: 文件操作库 | | libstrex: | libsubmask: 网络地址翻译 | ## 多媒体 | | | |--|--| | libuvc: USB摄像头库 | libmp4: MP4...