注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

Base64编码  

2015-06-29 17:34:58|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Base64编码

FIDO的开发需要使用Base 64的编码来传输一些东西,所以就对它进行一下详细了解吧。

首先要说明的,这不是一种加密的方法而只是一种编码的格式,一定要分清楚而不能弄成加密的方法。

Base64是网络上常见的用于传输8Bit字节代码的编码方式之一,说白了就是传输二制数据,但是直接传递二进制数据又不好转成字符串,毕竟网络特别是HTTP大多都是使用字符串来处理数据的。那么就可以使用这种方式了。

Base64由于其得不可直接读性,所以就会产生上面说的一些人会认为是加密了,如果你要强调这一点的话,也可以认为加密了。

Base64是把3*8个字节改成4*6个字节。4*6的不足8个的字节高位补0,也就是补8-6两个0.

标准的Base64编码并不适合直接在URL里面传输,因为URL编码器会把其中的“/”“+”字符变形为“%XX”的形式,而这些%号在进入数据库时还需要再进行转换。因为%一般来说是一种通配符。

为解决此问题,可采用一种用于URL的改进Base64编码,它在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。

另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+,*”以及前面在IRCu中用到的“[”和“]”在正则表达式中都可能具有特殊含义。

此外还有一些变种,它们将“+/”改为“_-”或“._”(用作编程语言中的标识符名称)或“.-”(用于XML中的Nmtoken)甚至“_:”(用于XML中的Name)。

Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3

就这些,好好学习,天天向上。

  评论这张
 
阅读(237)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017