Base64算法、Base64Encode、UrlEcode编码及应用

本文的主要内容:
1、Base64算法的由来与定义
2、Base64算法的原理
3、Base64编码与urlEncode编码的区别以及运用场景
4、代码实例(注意是否是遵循RFC2048)

Base64算法的由来

Base64算法最早应用于解决电子邮件传输问题,在早期,电子邮件只支持ASCII码字符。如果要传输一封带有非ASCII码字符的电子邮件,当它经过部分网关时就可能出现问题,这个网关可能会对非ASCII码字符的二进制位进行调整,即将这个非ASCII码的8位二进制码最高位置设置为0,此时用户收到的这个邮件就会是一封乱码的了。基于这个原因产生了Base64算法。

Base64是一种基于64个字符的编码算法。经过Base编码后的数据会比原始数据略长,为原来的4/3。经过Base64编码的字符串的字符数是以4为单位的整数倍。

RFC2045规定,在电子邮件中,每行为76个字符,每行末尾添加一个回车换行符(“\r\n”),无论每行是否够76个字符,都要加一个回车换行符。但实际情况中往往要忽略这一点。

我经常听到有人说Base64加密,听着十分变扭。准确地说,Base64是一种编码。

Base64算法的原理

在RFC2045中规定的字符映射表:
这里写图片描述

这张字符映射表中,Value指的是十进制编码,Encoding指的是字符,共映射了64个字符,这也是Base64算法命名的来源。映射表的最后一个字符是等号,它是用来补位的。
为了能在HTTP请求中以GET方式传递二进制数,由Base64算法衍生出了Url Base64算法。Url Base64主要是替换了Base64字符映射表中的第62、63个字符,也就是将”+”和”/”符号用”-“和”_”代替。至于”=”在Bouncy Castle提供者使用的是”.”代替,而在Commons Codec里则是完全杜绝使用补位符。

Base64算法主要是将给定的字符以及字符编码(如ASCII码、UTF-8码)对应的十进制数为基准,做编码操作:

  1. 将给定的字符串以字符为单位,转换成对应的字符编码(如ASCII码)
  2. 将字符编码转换成二进制
  3. 将二进制码进行分组转换操作,每3个8位二进制码为一组,转换为每4个6位二进制码为一组(不足6位时低位补0)。这是一个分组变化的过程,3个8位二进制码和4个6为二进制码的长度都是24位
  4. 将获得的4-6二进制码组进行补位,向6位二进制码高位补2个0,组成4个8位二进制码
  5. <
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值