Bootstrap

Python base64编码

  1. Base64 编码的基本概念

    • Base64 是一种基于 64 个可打印字符来表示二进制数据的编码方式。它的主要目的是将二进制数据转换为文本格式,以便在诸如电子邮件、HTML 表单、XML 等只支持文本数据的环境中进行安全传输和存储。
    • 之所以称为 Base64,是因为它使用 64 个字符(A - Z、a - z、0 - 9、+、/)来表示数据。另外还有一个等号(=)用于填充,它是在数据长度不是 3 的倍数时使用的。
  2. Base64 编码的工作原理

    • 首先,Base64 编码将输入的二进制数据按照每 3 个字节一组进行划分。因为每个字节是 8 位,所以 3 个字节一共是 24 位。这 24 位数据被划分为 4 个 6 位的分组。
    • 每个 6 位分组的值作为索引,在 Base64 编码表(包含 64 个字符)中查找对应的字符。例如,如果一个 6 位分组的值是 0,那么它对应的 Base64 字符是 'A';如果值是 25,对应的字符是 'Z'。
    • 当输入数据的字节长度不是 3 的倍数时,需要进行填充。如果最后一组只有 1 个字节,那么会在这组后面添加 2 个等号(=);如果最后一组有 2 个字节,会添加 1 个等号(=)。
  3. Python 中的 Base64 编码操作

    • 在 Python 中,可以使用base64模块来进行 Base64 编码。例如,对一个字符串进行编码:
import base64
#base64编码: 继续对字符串流进行编码,返回字符串流  0-f
s = '你好'
s = base64.b64encode(s.encode()) #所以需要先把s变成字符流,使用encode,然后再用b64encode进行编码
print(s) #b'5L2g5aW9'
s = base64.b64decode(s).decode() #先b64decode 解码s,解码的编程字符串流,再用decode解码就ok了
print(s) #你好
  • 首先将字符串转换为字节序列(因为b64encode方法接受字节序列作为输入),然后进行 Base64 编码得到字节序列,最后将字节序列转换为字符串输出。
  1. Base64 编码的应用场景

    • 数据传输:在网络通信中,一些协议可能只允许传输文本数据。例如,在简单邮件传输协议(SMTP)中,邮件内容需要是文本格式。如果要发送二进制附件,就可以先将其转换为 Base64 编码的文本,然后再发送。
    • 数据存储:当需要将二进制数据存储在文本格式的配置文件或数据库中时,Base64 编码是一种很好的选择。比如,将图片的二进制数据编码后存储在数据库的文本字段中。
  2. Base64 编码的局限性

    • 数据膨胀:Base64 编码后的数据大小会比原始二进制数据大大约。因为每 3 个字节的二进制数据会被编码为 4 个字节的 Base64 数据。这在存储和传输大量数据时可能会导致效率降低和存储空间的浪费。
    • 安全性:Base64 编码不是一种加密方式。它只是将二进制数据转换为文本格式,数据仍然是可以被解码的。如果需要保密数据,应该使用加密算法而不是 Base64 编码。
;