1.什么是base64?
Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法。由于 2^6=64,所以每 6 个比特为一个单元,对应某个可打印字符。3 个字节有 24 个比特,对应于 4 个 Base64 单元,即 3 个字节可由 4 个可打印字符来表示。
——维基百科
它不是一种加解密技术,是一种简单的编解码技术。
Base64 常用于表示、传输、存储二进制数据,也可以用于将一些含有特殊字符的文本内容编码,以便传输。
比如:
- 在电子邮件的传输中,Base64 可以用来将 binary 的字节序列,比如附件,编码成 ASCII 字节序列;
- 将一些体积不大的图片 Base64 编码后,直接内嵌到网页源码里;
- 将要传递给 HTTP 请求的参数做简单的转换,降低肉眼可读性;
注:用于 URL 的 Base64 非标准 Base64,是一种变种。 - 网友们在论坛等公开场合习惯将邮箱地址 Base64 后再发出来,防止被爬虫抓取后发送垃圾邮件。
3.为什么叫base64
因为它是基于(Base)64个字符的一种编码方式。使用其编码后的文本只包含64个ASCII码字符(偶尔加一个填充字符
=),如下所示:Base64使用到的64个字符:
A-Z26个a-z26个0-910个+1个
4. Base64 编码原理
标准 Base64 里的 64 个可打印字符是 A-Za-z0-9+/,分别依次对应索引值 0-63。索引表如下:

编码时,每 3 个字节一组,共 8bit*3=24bit,划分成 4 组,即每 6bit 代表一个编码后的索引值,划分如下图所示:

这样可能不太直观,举个例子就容易理解了。比如我们对 cat 进行编码:

可以看到 cat 编码后变成了 Y2F0。
如果待编码内容的字节数不是 3 的整数倍,那需要进行一些额外的处理。
如果最后剩下 1 个字节,那么将补 4 个 0 位,编码成 2 个 Base64 字符,然后补两个 =:

如果最后剩下 2 个字节,那么将补 2 个 0 位,编码成 3 个 Base64 字符,然后补一个 =:

5. 实现一个简易的 Base64 编码器
以下是使用python3版本利用base64库写的base64内容转换脚本
import base64
#将内容转为base64格式内容
def convertToBase64(info):
try:
tmpBytes=info.encode()
tmpBase64=base64.b64encode(tmpBytes)
return tmpBase64
except Exception as e:
print('异常:',e)
#将base64格式内容转为正常信息
def convertTostring(base64Info):
try:
tmpBytes=base64.b64decode(base64Info)
tmpStr=tmpBytes.decode()
return tmpStr
except Exception as e:
print('异常:',e)




Comments NOTHING