Base64/32/16编码
来源:互联网 发布:新浪通达信炒股软件 编辑:程序博客网 时间:2024/06/05 01:13
1.Base64定义
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串。Base64编码,首先我们应该搞清楚,为什么里面有个64的字样呢?其实是因为该编码使用64个明文来编码任意 的二进制文件,它里面只使用了A-Z,a-z,0-9,+,/这64个字符,有“略懂”的同学就会说了,里面还有“=”号啊,不错,不过等号不属于编码字 符,而是填充字符。
还有就是,为什么发明这么个编码呢,其实这个编码的原理是很简单的,“破解”也很容易,电子邮件刚出来的 时候,只传递英文字符,这没有问题,但是后来,中国人,日本人都要发email,这样问题就来了,因为这些字符有可能会被邮件服务器或者网关当成命令处 理,故必须得有一种编码来对邮件进行加密,但是加密的目的是为了能够使得一些原始的服务器不出问题(新得牛叉服务器已经能处理这些乱七八糟得情况了,不过 因为已经形成了一套规范,所以邮件还是得经过Base64编码才能传递),这样加密必须得简单(那搞个取反,异或加密吧,:-),还是没解决根本问题 咯),加密简单,这样客户端程序加密解密也快,又要是明文Ascii编码,这样Base64就诞生了。当初设计人员主要是考虑了两个问题:
1、加密算法复杂程度和效率
2、如何处理传输
2.Base64转码过程例子:
如果转换到最后你发现不够三个字节了怎么办呢?愿望终于实现了,我们可以用两 个Base64来表示一个字符或用三个Base64表示两个字符,像下图的A对应的第二个Base64的二进制位只有两个,把后边的四个补0就是了。所以 A对应的Base64字符就是QQ。上边已经说过了,原则是Base64字符的最小单位是四个字符一组,那这才两个字 符,后边补两个"="吧。其实不用"="也不耽误解码,之所以用"=",可能是考虑到多段编码后的Base64字符串拼起来也不会引起混淆。由此可见 Base64字符串只可能最后出现一个或两个"=",中间是不可能出现"="的。下图中字符"BC"的编码过程也是一样的。
4.Base32/16
base64就是用6位,2的6次幂就是64,所以就是Base64。同理Base32就是5位,16就是4位。
base32中就是用5个bit位表示8bit位的256个ascii字符。取其中的最小公约数,则8个base32字符表示出5个ascii字符。
base16也差不多, 4个base16字符表示出1个ascii字符。
- Base64/32/16编码
- Base64、32、16 编码解析
- 字符编码之Base64/32/16编码
- android base64/32编码
- Base64编码
- Base64编码
- base64编码
- BASE64编码
- Base64编码
- BASE64编码
- base64 编码
- Base64编码
- Base64编码
- Base64编码
- base64编码
- BASE64编码
- base64编码
- BASE64编码
- 小技巧
- SIFT定位算法关键步骤的说明
- spring四种依赖注入方式
- windows程序设计——图形基础
- Oracle存在修改,不存在插入记录
- Base64/32/16编码
- Java与C++编译过程比较
- POJ2739-Sum of Consecutive Prime Numbers
- 续流的理解
- BZOJ 3158: 千钧一发 最小割
- 文章标题 我的coding之路开始啦
- springmvc实现异步上传文件
- maven下载jar非常慢的解决方法
- 【个人笔记重点,不作为参考】主题:webstorm激活破解