加入收藏 | 设为首页 | 会员中心 | 我要投稿 焦作站长网 (https://www.0391zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

关于base64编码的原理及实现方法分享

发布时间:2020-03-15 13:49:36 所属栏目:安全 来源:站长网
导读:我们的图片大部分都是可以转换成base64编码的data:image。 这个在将canvas保存为img的时候尤其有用
一、Base64编码原理

步骤1:将所有字符转化为ASCII码;
步骤2:将ASCII码转化为8位二进制;
步骤3:将二进制3个归成一组(不足3个在后边补0)共24位,再拆分成4组,每组6位;
步骤4:统一在6位二进制前补两个0凑足8位;
步骤5:将补0后的二进制转为十进制;
步骤6:从Base64编码表获取十进制对应的Base64编码;

关于base64编码的原理及实现方法分享



说明:不足3个补0的最终Base64编码为=,而不是A!

二、Base64编码示例

示例一:zyq对应Base64编码为enlx

关于base64编码的原理及实现方法分享



示例二:mzwu对应Base64编码为bXp3dQ==

关于base64编码的原理及实现方法分享

 


虽然除ie外,大部分现代浏览器都已经支持原生的基于base64的encode和decode,例如btoa和atob。(将canvas画布保存成img并强制改变mimetype进行下载,会在下一篇记录)

但是处于好奇心,还是驱使我去了解下base64编码的原理。以便也在不支持原生base64编码的ie下可以得以实现。

【Base64】
-base64的编码都是按字符串长度,以每3个8bit的字符为一组,
-然后针对每组,首先获取每个字符的ASCII编码,
-然后将ASCII编码转换成8bit的二进制,得到一组3*8=24bit的字节
-然后再将这24bit划分为4个6bit的字节,并在每个6bit的字节前面都填两个高位0,得到4个8bit的字节
-然后将这4个8bit的字节转换成10进制,对照Base64编码表 (下表),得到对应编码后的字符。

(注:1. 要求被编码字符是8bit的,所以须在ASCII编码范围内,u0000-u00ff,中文就不行。
   2. 如果被编码字符长度不是3的倍数的时候,则都用0代替,对应的输出字符为=)

Base64 编码表
Value Char     Value Char     Value Char     Value Char
0   A   16   Q   32   g   48   w  
1   B   17   R   33   h   49   x  
2   C   18   S   34   i   50   y  
3   D   19   T   35   j   51   z  
4   E   20   U   36   k   52   0  
5   F   21   V   37   l   53   1  
6   G   22   W   38   m   54   2  
7   H   23   X   39   n   55   3  
8   I   24   Y   40   o   56   4  
9   J   25   Z   41   p   57   5  
10   K   26   a   42   q   58   6  
11   L   27   b   43   r   59   7  
12   M   28   c   44   s   60   8  
13   N   29   d   45   t   61   9  
14   O   30   e   46   u   62   +  
15   P   31   f   47   v   63   /

 

比如举下面2个例子:
a) 字符长度为能被3整除时:比如“Tom” :

复制代码 代码如下:

(编辑:焦作站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读