- 浏览: 4754241 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
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 17053在Linux下,常用tar对文 ... -
使用nmap扫描服务器端口的一次操作
2012-11-01 17:00 15139使用nmap扫描服务器端口的一次操作 本文来自:http ... -
我使用过的Linux命令之wget - ooo
2011-09-14 13:10 0我使用过的Linux命令之wg ... -
推荐一篇学习Vim使用的好文:酷壳 - 简明 Vim 练级攻略
2011-09-09 12:53 9149简明 Vim 练级攻略 http://coolshell.c ... -
推荐一篇学习Vim使用的好文:酷壳 - 简明 Vim 练级攻略
2011-09-09 12:49 1简明 Vim 练级攻略 http://coolshell.c ... -
我使用过的Linux命令之:(冒号) - 啥也不做(除了……)
2011-08-29 13:18 12101我使用过的Linux命令之: ... -
我使用过的Linux命令之date - 显示、修改系统日期时间
2011-08-25 09:21 41985我使用过的Linux命令之da ... -
我使用过的Linux命令之declare - 声明shell变量(不知道没关系、知道了就更好的内建命令)
2011-08-16 09:22 21831我使用过的Linux命令之declare - 声明shell变 ... -
我使用过的Linux命令之alias - 设置命令的别名,让 Linux 命令更简练
2011-08-11 09:31 28828我使用过的Linux命令之alias - 设置命令的别名,让 ... -
我使用过的Linux命令之ar - 创建静态库.a文件
2011-08-08 10:40 51934我使用过的Linux命令之ar - 创建静态库.a文件 本 ... -
我使用过的Linux命令之crontab - 设置例行任务(类似于Windows中的任务计划)
2011-08-04 22:26 9752我使用过的Linux命令之crontab - 设置例行任务(类 ... -
我使用过的Linux命令之chmod - 改变文件/目录的访问权限
2011-08-03 21:33 10706我使用过的Linux命令之chmod - 改变文件/目录的访问 ... -
我使用过的Linux命令之export - 设置或显示环境变量
2011-08-02 19:55 25441我使用过的Linux命令之export - 设置或显示环境变量 ... -
我使用过的Linux命令之wc - 统计文件行数、单词数或字节数
2011-07-26 10:50 29018我使用过的Linux命令之wc - 统计文件行数、单词数或字节 ... -
我使用过的Linux命令之groupdel - 删除群组
2011-07-22 22:13 9693我使用过的Linux命令之gr ... -
我使用过的Linux命令之ifconfig - 网络配置命令
2011-07-21 20:43 60552我使用过的Linux命令之ifconfig - 网络配置命令 ... -
我使用过的Linux命令之ll - 列出文件/目录的详细信息
2011-07-20 21:22 7209我使用过的Linux命令之ll ... -
我使用过的Linux命令之mkdir - 创建目录
2011-07-20 20:58 13686我使用过的Linux命令之mkdir - 创建目录 本文链 ... -
我使用过的Linux命令之perror - 解释错误代码
2011-07-18 20:29 25081我使用过的Linux命令之perror - 解释错误代码 ... -
我使用过的Linux命令之ping - 测试与目标主机的连通性
2011-07-16 10:46 26615我使用过的Linux命令之ping - 测试与目标主机的连通性 ...
相关推荐
linux系统c++实现的url和base64编解码 在webserver中会使用 自己实现的一个webserver,详见https://download.csdn.net/download/k117470154/10234299
3. **管道操作**:Base64也可以与其他命令结合使用,例如,你可以直接对命令输出进行编码或解码: ```bash cat somefile | base64 # 编码 cat encodeddata | base64 -d # 解码 ``` 4. **交互模式**:`base64 -i...
提供的`Base64.exe`可能是为Windows平台设计的一个Base64编码/解码工具,而在Linux环境中,通常使用上述的`base64`命令。不过,对于跨平台的测试或开发工作,了解多种环境下的Base64工具是有帮助的。 `Readme-说明....
2. **图像与BASE64转换**:在Linux中,可以使用命令行工具或编程语言来实现这一过程。命令行工具如`base64`可用于编码,而`base64 -d`则用于解码。在编程中,我们可以利用C++、C或其他语言的库来处理。 3. **C++与C...
为了使用这些函数,你需要先解压文件,然后使用`make`命令编译`test_base64.c`,运行测试确保所有功能都正常工作。如果一切顺利,你可以将`base64_encode.c`和`base64_decode.c`集成到你的C语言项目中,以便在需要...
压缩包文件名“vc_linux_base64”暗示了压缩包中可能包含了VC6.0项目文件(可能是`.cpp`和`.h`文件)和/或Linux的源代码文件(可能是`.c`或`.cpp`),这些文件实现了Base64编码和解码的功能。用户可能需要这些源代码...
在C++中使用libb64库,可以先包含`libb64.h`,然后调用如`base64_encode_init()`、`base64_encode_inout()`和`base64_encode_finish()`等函数进行编码操作,对于解码则有`base64_decode_init()`、`base64_decode_in...
本主题将深入探讨在Linux环境下使用C语言实现Base64编码和解码的过程。 首先,让我们理解Base64的基本原理。Base64使用64个字符来表示二进制数据,这64个字符包括大小写字母(A-Z, a-z)、数字(0-9)以及"+"和"/...
C++实现的base64编解码类,无其他依赖,兼容windows linux。 C++实现的base64编解码类,无其他依赖,兼容windows linux。
编码转换包括:Ascii 编码,Base64、Base 系列编码,Escape 编码,Hex 编码, Html entity 编码,莫尔斯电码,Quoted-printable(可打印字符引用编码),Shellcode 编码,Sql 编码,Tap Code(敲击码),Unicode ...
Base64-De-Encoder是一个开源的命令行工具,它允许用户在Linux、Mac OS和Windows操作系统上对Base64编码的数据进行解码和编码,极大地便利了开发者和系统管理员的工作。 Base64编码的基本原理是将每3个字节(24位)...
- 解码Base64字符串得到原始的二进制数据,同样可以使用第三方库或自定义函数完成。 - 将解码后的二进制数据转换回`cv::Mat`对象,这通常涉及到分配内存和复制数据。 - 使用`cv::imwrite()`函数将`cv::Mat`对象...
这个例子展示了如何使用`Base64Converter`类将一个名为`input.jpg`的图片文件编码为Base64字符串,保存到文本文件`encoded.txt`,然后读取这个文件并解码回图片,最后将解码后的图片保存为`output.jpg`。 总结来说...
解密时,先使用`Base64Util.decodeBase64StringToFile()`将BASE64字符串解码回ZIP文件,再使用相应的工具解压缩。 在实际开发中,这些工具类可以封装成一个完整的库,提供给其他部分代码使用。例如,你可以创建一个...
Windows下可以直接执行exe,也可以使用VC编译 Linux/Unix下需要./configure && make && make install三部曲编译 base64 --help查看帮助,一看就会用
Java Base64解码错误是指在Java中使用Base64解码时出现的异常错误,通常是由于Base64解码的输入参数不正确或解码过程中出现问题所致。下面我们将详细分析Java Base64解码错误的原因和解决方法。 一、 Java Base64...
这个工具不仅包含了图形用户界面(GUI),使得用户能够方便地进行Base64的编码和解码操作,而且其内部实现的编码和解码函数还支持Linux平台,这意味着代码可能采用了跨平台的编程技术,如POSIX标准或Qt库。...
BASE是一款基于PHP的可以搜索和实施安全事件的分析引擎,她的安全事件数据库来源于很多入侵检测系统...一个数据包浏览器(解码器);还可以根据时间、传感器、信号、协议和IP地址等生成状态图。 内含base-1.4.5.tar.gz
- `unendcode` 和 `uudecode`:解码uuencode或base64编码的数据。 了解并熟练使用这些命令是Linux系统管理的基础,它们能帮助用户高效地执行日常任务,无论是系统维护、文件操作还是网络管理。通过实践和学习,你...
- 解码函数将Base64字符串转换回原始二进制数据,去除末尾的填充字符。 在"yun_test"这个文件中,可能包含了上述三种加密方法的C++代码实现,以及相应的测试用例。测试用例通常是用已知输入和预期输出来验证算法...