目录
一、概述
Base64编码是一种基于64个可打印字符来表示二进制数据的方法。
为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如:传统的邮件只支持可见字符的传送,像ASCII码的控制字符就不能通过邮件传送。这样用途就受到了很大的限制。图片的二进制流的每个字节不可能全部是可见字符,这就导致图片的二进制流无法传送。最好的解决方式就是在不改变传统协议的情况下,做一种扩展方案来支持二进制文件的传送。即把不可打印的字符也能用可打印字符来表示,问题就解决了。Base64编码就是为了实现这一方案而设计的编码格式。
Base64就是一种基于64个可打印字符来表示二进制数据的表示方法。
二、原理
1.通过将待转换的字符串每三个字节分为一组,每个字节占8个二进制位,那么共有24个二进制位。
2.每24个二进制位分为每6个一组,则每3个字节可分为4组
3.在每组前面添加两个0,每组由6个二进制位变为8个二进制位,总共32个二进制位,即四个字节。
4.根据Base64编码索引表获得对应的值。
索引表
原理图1:
原理图2:
三、算法源码
IndexTable='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
#base64加密算法
import base64
#base64算法编码:byte-->str
def encryption(byteData):
# 打印字节数据
print('byte数据: ', byteData)
# print(len(byteData))
#将字节数据转为二进制数
binData = ''
for i in byteData:
#每个字节二进制记得左侧补零
binData = binData + bin(i)[2:].zfill(8)
print('转后二进制数: ', binData)
#每3个字节24位,右侧补零
fillZero = (24 - len(binData) % 24) % 24
print('补零数: ', fillZero)
binData =