Android数据编码之Base64

什么是Base64

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。

Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。

Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本。

很多人把他叫做Base64加密,其实Base64不是一种加密方式,并不能起到加密的效果,它只是一种编码方式。Base64是基于以下64个可见字符实现的,所以叫Base64。

Base64 字符

Base64编码的作用

Base64编码在实际开发中有相当广泛的用途

在计算机中任何数据都是按ascii码存储的,而ascii码的128~255之间的值是不可见字符。而在网络上交换数据时,比如说从A地传到B地,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。所以就先把数据先做一个Base64编码,统统变成可见字符,这样出错的可能性就大降低了。

对证书来说,特别是根证书,一般都是作Base64编码的,因为它要在网上被许多人下载。电子邮件的附件一般也作Base64编码的,因为一个附件数据往往是有不可见字符的。

Base64编码在Android中的使用

Adroid中通过Base64类直接实现Base64的编码和解码

String strEncode = Base64.encodeToString("Hello WuXiaAChao!".getBytes(), Base64.DEFAULT);
String strDecode = new String(Base64.decode(strEncode, Base64.DEFAULT));
Base64--编码后数据: SGVsbG8gV3VYaWFBQ2hhbyE=
Base64--解码后数据: Hello WuXiaAChao!

Adroid中Base64.DEFAULT参数说明

  • DEFAULT 这个参数是默认,使用默认的方法来加密
  • NO_PADDING 这个参数是略去加密字符串最后的”=”
  • NO_WRAP 这个参数意思是略去所有的换行符(设置后CRLF就没用了)
  • CRLF 这个参数是Win风格的回车换行符,意思就是使用CR(回车)LF(换行)这一对作为一行的结尾,而不是Linux/Unix风格的LF(换行)
  • URL_SAFE 这个参数意思是加密时不使用对URL和文件名有特殊意义的字符来作为加密字符,具体就是以-和_取代+和/

Base64编码的实现

Base64是3个字节一组,最后变成4个可见字符。具体实现是:

  1. 先将3个字符转换ASCII码的二进制共24 bit
  2. 再将24 bit按6 bit一组分成4组
  3. 每组的高位补两个0,变成4个字节
  4. 最后对照Base64字符表转成对应的4个字符
    在这里插入图片描述
    如果目标字符不是3的倍数,多出一个字节的分成6 bit和2 bit两组,2 bit低位补4个0变成6 bit,两组再高位补两个0,最后转成2个Base64字符。因为Base64字符是4个,最后补两个等号,如"a"的Base64编码是"YQ=="。多出两个字符的也是类似处理,不足一组的低位补足6位,再高位补两个0转成Base64编码,最后不足4个的补等号,如"ab"的Base64编码是"YWI="。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值