使用 Python 将字符串编码为 Base64

Vaibhav Vaibhav 2023年10月10日
使用 Python 将字符串编码为 Base64

Base64 是一种编码方案,它通过翻译二进制数据将一系列 8 位字节 二进制数据转换为 ASCII 或美国信息交换标准代码字符串格式。

这种转换通常用于不做任何修改地传输数据。

所有编程语言都包含将数据从一种格式转换为另一种格式的实用程序。在本文中,我们将学习如何借助 Python 编程语言将字符串编码为 base64。

使用 Python 将字符串编码为 base64

为了对 base64 进行编码,我们将使用基于 Python 的模块 base64。该模块是 Python 标准库的一部分。

该模块有一个 b64encode(s, altchars = None) 方法,该方法接受字节数据流 s 并将其转换为 base64 编码字符串。

还有一个参数 altchars 指定字符+/的替代字母表。需要确保将 URL 和文件路径转换为 ​​base64 是安全可靠的。

这个库还有另一种方法,b64decode(s, altchars = None, validate = False),它接受 base64 编码的数据流 s,一个可选的 ASCII 或类似字节的字符串,表示 + 的替代字符和/ 字符 altchars

此方法还有一个参数 validate,它是一个用于对提供的字符串执行验证的标志。默认情况下,该方法将忽略所有不适合常规 base-64 字母或替代字母字符串的字符。

如果设置为 True,它将引发 binascii.Error 异常。现在我们已经了解了一些理论,让我们看看相关的例子。

import base64

s1 = b"Python"
s2 = b"https://www.instagram.com"
s3 = b"C:\Program Files\User"

# Encoding
e1 = base64.b64encode(s1)
e2 = base64.b64encode(s2)
e3 = base64.b64encode(s3)

# Decoding
d1 = base64.b64decode(e1)
d2 = base64.b64decode(e2)
d3 = base64.b64decode(e3)

print("S1:", s1)
print("S2:", s2)
print("S3:", s3)
print("S1 Encoded to base64:", e1)
print("S2 Encoded to base64:", e2)
print("S3 Encoded to base64:", e3)
print("E1 Decoded:", d1)
print("E2 Decoded:", d2)
print("E3 Decoded:", d3)

输出:

S1: b'Python'
S2: b'https://www.instagram.com'
S3: b'C:\\Program Files\\User'
S1 Encoded to base64: b'UHl0aG9u'
S2 Encoded to base64: b'aHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbQ=='
S3 Encoded to base64: b'QzpcUHJvZ3JhbSBGaWxlc1xVc2Vy'
E1 Decoded: b'Python'
E2 Decoded: b'https://www.instagram.com'
E3 Decoded: b'C:\\Program Files\\User'

上面的 Python 代码片段初始化了三个字符串:一个常用字符串、一个 URL 和一个 Microsoft Windows 文件路径。

接下来,它将所有三个字符串编码为 base64,并进一步将 base64 字符串解码为字节。字符串前面的 b 前缀将它们转换为字节。

最后,所有信息都打印在终端上。要了解有关 base64 库的更多信息,请参阅此处官方文档。

作者: Vaibhav Vaibhav
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.