浅析Base64

所谓Base64,就是说选出64个字符作为一个基本字符集,然后,将其他所有符号都转换成这个字符集中的字符

基本字符集包括:

小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/"(再加上作为垫字的"=",实际上是65个字符)。


Base64编码作用

所有的二进制文件,都可以因此转化为可打印的文本编码,使用文本软件进行编辑;

能够对文本进行简单的加密。


Base64编码规则

一、将每三个字节(8位)作为一组,一共是24个二进制位。

二、将这24个二进制位分为四组,每个组有6个二进制位。

三、在每组前面加两个00,扩展成32个二进制位,即四个字节。

因为,Base64将三个字节转化成四个字节,因此Base64编码后的文本,会比原文本大出三分之一左右

四、根据下表,得到扩展后的每个字节的对应符号,这就是Base64的编码值。

在这里插入图片描述

五、第一步时如果字节数不足三,则这样处理:

(1)一个字节的情况:

将这一个字节的8个二进制位,按照规则转成二组(6位一组),最后一组除了前面加二个0以外,后面再加4个0,这样得到一个二位的Base64编码,再在末尾补上两个"="号。

比如,"M"这个字母是一个字节:

对应的二进制值是01001101,分为两组010011、01

第一组前面加两个0,最后一组前后都加两个0:00010011、00010000,十进制为19、16

根据十进制查表对应的Base64值分别为T、Q,再补上二个"="号,因此"M"的Base64编码就是TQ==。

(2)二个字节的情况:

将这二个字节的一共16个二进制位,按照规则转成三组(6位一组),最后一组除了前面加两个0以外,后面也要加两个0,这样得到一个三位的Base64编码,再在末尾补上一个"="号。

例如,"Ma"这个字符串是两个字节:

对应的二进制值是01001101、01100001,将它们连成一个16位的二进制字符串0100110101100001,分为三组:010011、010110、0001

前两组加两个0,最后一组除了前面加两个0以外,后面也要加两个0:00010011、00010110、00000100,十进制为:19、22、4

根据十进制查表对应Base64值分别为T、W、E,再补上一个"="号,因此"Ma"的Base64编码就是TWE=


例子:转化单词Man

第一步,“M”、“a”、"n"的ASCII值分别是77、97、110,对应的二进制值是01001101、01100001、01101110,将它们连成一个24位的二进制字符串010011010110000101101110。

第二步,将这个24位的二进制字符串分成4组,每组6个二进制位:010011、010110、000101、101110。

第三步,在每组前面加两个00,扩展成32个二进制位,即四个字节:00010011、00010110、00000101、00101110。它们的十进制值分别是19、22、5、46。

第四步,根据上表,得到每个值对应Base64编码,即T、W、F、u。

因此,Man的Base64编码就是TWFu

例子:中文“严”

汉字本身可以有多种编码,比如gb2312、utf-8、gbk等等,每一种编码的Base64对应值都不一样,下面的例子以utf-8为例

“严"的utf-8编码为E4B8A5,写成二进制就是三字节的"11100100 10111000 10100101”

将这个24位的二进制字符串,按照规则,转换成四组一共32位的二进制值"00111001 00001011 00100010 00100101",相应的十进制数为57、11、34、37,它们对应的Base64值就为5、L、i、l。

所以,汉字"严"(utf-8编码)的Base64值就是5Lil

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

列队猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值