美文网首页
base64编码是怎么工作的?

base64编码是怎么工作的?

作者: 布尔教育 | 来源:发表于2016-11-28 10:33 被阅读0次

按:在布尔教育PHP中级班的课堂上,有位同学问这样一个问题:“我在用 base64_encode 对用户名进行编码时,会出来等号,是不是可以去掉?”跟我来看完这篇文章,答案即揭晓.

1: 为什么需要base64?

ASCII码一共规定了128个字符的编码,这128个符号,范围在[0,127]之间.其中,[0,31],及127, 33个属于不可打印的控制字符.在电子邮件传输信息时,有些邮件网关会把[0,31]这些控制字符给悄悄清除.还有的早期程序,收到[128,255]之间的国际字符时,甚至会发生错误.如何在不同邮件网关之间安全的传输控制字符,国际字符,甚至二进制文件?于是作为MIME多媒体电子邮件标准的一部分—base64被开发出来.

2: 一句话说完base64怎么工作的?

把N字节的内容对应的8*N位, 每6位砍成1段,得到 (8*N)/6 个单元,每个单元的值,都在[0,63]之间,再把其值对应1个ascii字符,拼接起来,OK!base64_encode(’PHP’) ==> ‘UEhQ’, 编码过程如下:

3: 如果每6位砍成1段,但不能整除,余下2个位或4位怎么办?

用”0″来补至6位, 并再次转化为”base64字符表”中的某个字符.然后,再用”=”字符当做6个位,继续填充,直至总位数能被8带整除.

4:base64表示图片

通过上面的演示,可以看出,base64也可以编码二进制文件,如邮件中的图片和附件.编码后,我们可以在网页或邮件的源码里,直接体现此图片,而不必把图片放在服务器上,引用其链接.用例:base64(’abc.png’) ==> ‘encoded-result’;则在网页中,

看到下面这个5角星了吗? 右键看源码,就会发现图片是一串字符串 :)

5: base64编码后字节的变化

很容易推算出, 编码后,每6个位变成8个位.因此,编码后字节约比编码前多33%.

6: base64串结尾的”=”可以去掉吗?

从上面的编码规则可以反推出, 在base64解码的过程中, 要清除掉结尾处的等号,然后再反查”base64索引与字母对照表”,转换成原始的字节序列.那么,去掉尾部的等号,并没有丢失原始信息,但结构变得不规范.解码前是否判断完整性,这取决于你的应用程序.实测PHP中的base64_decode函数,并不检测尾部的等号是否完整.

相关文章

  • 加密编码总结

    url编码 base64编码 工作中碰到url与base64配合加解密的问题,base64编码后的字符串中可能含有...

  • 详解base64原理

    详解base64原理 案例: '鹅' --> 经过base64编码 --> 6bmF 那它怎么编码的呢? 以 '鹅...

  • base64编码是怎么工作的?

    按:在布尔教育PHP中级班的课堂上,有位同学问这样一个问题:“我在用 base64_encode 对用户名进行编码...

  • iOS URL安全的Base64编码、解码

    参考iOS开发探索-Base64编码iOS URL编码&base64编码URL安全的Base64编码,解码 为什么...

  • SMTP整理

    账号:BASE64编码的账号 密码:BASE64编码的密码 快速BASE64编码网址: http://tools....

  • BASE64 编码简析

    Base64编码: <1>·Base64编码简介: <2>·使用Base64的原因: <3>·编码原理: 成这个字...

  • Base系列加密解密

    Base编码系列:[Base64][Base32] [Base16] [Base64] Base64编码是使用64...

  • Base64编码

    Base64编码 Base64编码是一种基于64个字符的编码,按照RFC2045的定义,Base64被定义为:Ba...

  • base64 和 url base64 和 encodeURIC

    1 先来看base64编码 2 再看url base64编码 可以看出,非url base64不会对斜杠进行编码。...

  • 06 - Base64编码

    Base64编码 什么是Base64? Base64是网络上最常见的用于传输8bit字节码的编码方式之一。Base...

网友评论

      本文标题:base64编码是怎么工作的?

      本文链接:https://www.haomeiwen.com/subject/fapvpttx.html