使用 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.