一、什么是Base64编码?
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。
按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)
二、为什么要使用Base64编码?
Base64 不是加密算法,它主要的用途是把一些二进制数转成普通字符用于网络传输。由于一些二进制字符在传输协议中属于控制字符,不能直接传送,需要转换一下。
三、在哪儿用到了Base64编码?
例1、电子邮件MIME协议的传送编码域, Base64是非英语国家最常用的编码方式。
例2、在Java持久化框架Hibernate中,就采用Base64来将一个较长的唯一标识符(128位的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。
例3、迅雷的“专用地址”也是用Base64"加密"的。
第一步、在地址的前后分别添加AA和ZZ;
第二步、对新的字符串进行Base64编码。
对应的PHP代码段如下:
if($button=="普通地址->迅雷地址")echo"thunder://".base64_encode("AA".$txt1."ZZ");
例4、垃圾邮件的传播者用Base64来避开反垃圾邮件工具的扫描,因为那些工具通常都不会翻译Base64的讯息。
四、Base64编码包含哪些字符?
“无图无真相”,跳过原理部分,我们一起来看一下Base64的字符表。
感觉是不是有些似曾相识?
Base64 字符表计算机基础知识通常会从二进制,八进制,十六进制讲起,然后介绍ASCII码,ASCII码包含128个字符,而Base64编码恰好是它的一半——64个字符。如上图所示,标准Base64的字符包括:26个大写字母,26小写字母,10个阿拉伯数字,以及2个运算符号+和/。
标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。为解决此问题,可采用一种用于URL的改进Base64编码,它在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。
五、有没有Base64编码的示例?
下面就“举一个栗子”:
1、encodeImgageToBase64()将URL指向的图片,转化为字节数组字符串,并对其进行Base64编码处理,返回编码后的字符串。
2、打印出编码后的Base64字符串, 并将编码转为图片另存到本地。
知猪侠.jpg的Base64编码 Java代码示例
网友评论