Base-64编码及Perl实现
来源:互联网 发布:多个表格数据自动汇总 编辑:程序博客网 时间:2024/06/07 22:32
2012-11-04 wcdj
Base-64编码
Base-64编码可以将任意一组字节转换成较长的(扩大了33%)常见文本字符序列,从而可以合法地作为HTTP首部字段值。即,Base-64编码将用户输入或二进制数据打包成一种安全的格式,将其作为HTTP首部字段的值发送出去,而无须担心其中包含会破坏HTTP分析程序的冒号、换行符或二进制值。
8位到6位
Base-64编码将一个8位字节拆分为6位的片段,并为每个6位的片段分配一个字符(Base-64字母表中的64个字符之一,0~63),这64个字符中包含26个大写字母、26个小写字母、10个数字、‘+’和‘/’2个字符,共64个字符,另外还使用了特殊字符‘=’。
Base-64填充
Base-64编码收到一个8位字节序列,将这个二进制序列流划分成6位的块。但二进制序列有时不能正好平均地分成6位的块,在这种情况下,就在序列末尾填充零位,使二进制序列的长度成为24的倍数(即,6和8的最小公倍数)。
对已填充的二进制串进行编码时,任何完全填充(不包含原始数据中的位)的6位组都由特殊的第65个符号‘=’表示;如果6位组是部分填充的,就将填充的位设置为0。
- 编码「Man」
在此例中,Base64算法将三个字符编码为4个字符
Base64索引表:
Perl实现
MIME::Base64是Perl中的Base-64编/解码模块。
#!/usr/bin/perluse MIME::Base64;printf("orignal string is 'Man'\n");$encoded = encode_base64('Man');printf("after base64 encoded is: %s", $encoded);$decoded = decode_base64($encoded);printf("after base64 decoded is: %s\n\n", $decoded);printf("\nencode_base64\n");# YTph$encoded1 = encode_base64('a:a');print $encoded1;# YTphYQ==$encoded2 = encode_base64('a:aa');print $encoded2;# YTphYWE=$encoded3 = encode_base64('a:aaa');print $encoded3;# YTphYWFh$encoded4 = encode_base64('a:aaaa');print $encoded4;printf("\ndecode_base64\n");$decoded1 = decode_base64($encoded1);print $decoded1 ."\n";$decoded2 = decode_base64($encoded2);print $decoded2 ."\n";$decoded3 = decode_base64($encoded3);print $decoded3 ."\n";$decoded4 = decode_base64($encoded4);print $decoded4 ."\n";system(pause);
参考:
http://zh.wikipedia.org/wiki/Base64
- Base-64编码及Perl实现
- Base 64编码用C#实现
- base 64编码
- 什么是Base-64编码
- Base 64 编码
- java Base 64 编码
- base 64编码
- Base 64 Encoding (64编码)
- [转]什么是Base-64编码?
- 文本文件BASE-64编码解码
- base-122编码,比base-64更加高效
- perl--- base module
- perl use base 继承
- 教你用Perl 实现Base64编码
- 图片 base 64 的编码与解码
- Data URI Base 64 编码转为图片
- perl 面向对象 use base
- perl use base 代替 @ISA
- myeclipse自动提醒
- tcp短连接TIME_WAIT问题解决方法大全(1)——高屋建瓴
- Linux下shell的使用
- C# Winform程序设置登录窗体先启动
- 第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
- Base-64编码及Perl实现
- tcp短连接TIME_WAIT问题解决方法大全(2)——SO_LINGER
- 程序员经典面试题及答案1
- C# USB转串口突然拔出检测解决方案
- ObjC至C++转换要点初步总结(for Cocos2d-x)
- Windows Phone 7 开发 31 日谈——第14日:墓碑机制(多任务)
- 关于“开机=关机”“病毒”
- SAS_9.3_64位_安装方法(验证可用)
- tcp短连接TIME_WAIT问题解决方法大全(3)——tcp_tw_recycle