Python 的 Base64 模塊是一個強大的消息編碼和解碼工具。您可以使用它通過 Internet 安全地發送數據。使用這種編碼來保護敏感數據免受惡意黑客攻擊是網站、應用程序和通信服務的標準程序。
Base64 模塊有一對函數,可用于對消息進行編碼和解碼,從而為數據傳輸增加一些額外的安全性。

Tkinter 和 Base64 模塊
Tkinter 允許您創建桌面應用程序。它提供了各種小部件,例如按鈕、標簽和文本框,可以輕松開發應用程序而無需付出太多努力。您可以使用 Tkinter 創建令人難以置信的 GUI 程序。您可以構建一個簡單的計算器、一個待辦事項列表應用程序或一個打字測試游戲。要將 Tkinter 安裝到您的系統中,請打開您的終端并輸入:
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
sudo apt install python3-tk
BASE64 提供了將二進制數據編碼為 ASCII 并將其解碼回二進制的功能。它支持標準和 URL 安全編碼,使信息傳輸更加安全。要將字符串轉換為 Base64 字符,請獲取每個字符的 ASCII 值并計算其 8 位二進制。通過重新分組數字并將它們重新轉換為各自的十進制值來轉換這塊 6 位。最后使用Base64編碼表,得到每個小數的Base64值。
如何在 Python 中編碼和解碼消息
首先導入這兩個模塊。初始化 Tkinter 實例并顯示根窗口。設置窗口的標題、尺寸(以像素為單位)和背景顏色。
from tkinter import *
import base64
root = Tk()
root.geometry('800x500')
root.configure(background='aqua')
root.title("使用 Python 對消息進行編碼和解碼")

使用標簽小部件顯示有關應用程序的有用信息。該標簽接受您要放置它的父窗口、它應該顯示的文本以及字體樣式、顏色和背景顏色。在將小部件放入父小部件之前,使用 pack() 在布局塊中組織小部件。StringVar 可以更輕松地控制標簽或條目等小部件的值。
Label(root, text='Python消息編碼器和解碼器', font='arial 25 bold', fg='white', bg="purple").pack()
Text = StringVar()
key = StringVar()
mode = StringVar()
Result = StringVar()

定義一個函數 Encode(),它接受一個用于編碼和解碼的密鑰以及消息。定義一個空列表并迭代到消息的長度。將 key 的索引設置為操作的模數,并將其值存儲在變量 key_c 中。使用 ord() 獲取字符的 Unicode 值,使用 chr() 獲取表示指定值的字符。
將此值附加到列表中。使用空字符串連接列表的每個元素,并使用 encode() 方法返回字符串的 utf-8 編碼版本。base64.urlsafe_b64encode ()方法對此輸入進行編碼,并將 – 替換為 + 并將 _ 替換為 /。
def Encode(key, message):
????enc = []
????for i in range(len(message)):
????????key_c = key[i % len(key)]
????????enc.append(chr((ord(message[i]) + ord(key_c)) % 256))
????return base64.urlsafe_b64encode("".join(enc).encode()).decode()

定義一個函數Decode(),它接受用于編碼和解碼的密鑰以及消息。定義一個空列表并解碼消息。迭代到消息的長度并將操作的模數設置為索引并將其值存儲在key_c中。附加 Unicode 字符串消息解碼的字符,如下所示。返回解碼后的字符串。

定義一個函數Mode(),它獲取用戶在 Entry 小部件中輸入的模式,并根據選擇調用適當的函數。如果用戶未輸入有效響應,則顯示一條錯誤消息:
def Mode():
????if (mode.get() == 'E'):
????????Result.set(Encode(key.get(), Text.get()))
????elif (mode.get() == 'D'):
????????Result.set(Decode(key.get(), Text.get()))
????else:
????????Result.set('Invalid Mode')

定義一個函數Exit()來殺死和終止在后臺運行的解釋器。定義一個函數 Reset() 來清除 Entry 字段的內容:
def Exit():
????root.destroy()
def Reset():
????Text.set("")
????key.set("")
????mode.set("")
????Result.set("")
為消息、密鑰、模式和文本定義標簽和條目小部件。指定要放置它們的父窗口、字體樣式、文本和背景顏色。還要設置坐標來組織它們。
Label(root, font='arial 17 bold', text='消息', fg='black', bg="aqua").place(x=60, y=100)
Entry(root, font='arial 15', textvariable=Text, bg='white').place(x=450, y=100)
Label(root, font='arial 17 bold', text='密鑰', fg='black', bg="aqua").place(x=60, y=130)
Entry(root, font='arial 15', textvariable=key, bg='white').place(x=450, y=130)
Label(root, font='arial 17 bold', text='模式(E-Encode, D-Decode)', fg='black', bg="aqua").place(x=60, y=160)
Entry(root, font='arial 15', textvariable=mode, bg='white').place(x=450, y=160)
Label(root, font='arial 17 bold', text='文本', fg='black', bg="aqua").place(x=60, y=190)
Entry(root, font='arial 15 bold', textvariable=Result, bg='white').place(x=450, y=190)
Label(root, text='Linux迷 www.linuxmi.com', font='arial 25 bold', fg='white', bg="purple").pack()

同樣,定義三個按鈕來查看結果、重置字段和停止程序。這些按鈕有一個名為 command 的特殊參數,它接受一個函數并在單擊時執行它:
Button(root, font='arial 15 bold', text='結果', padx=2, bg='Light Gray', command=Mode).place(x=100, y=240)
Button(root, font='arial 15 bold', text='重置', width=6, command=Reset, bg='Green', padx=2).place(x=300, y=240)
Button(root, font='arial 15 bold', text='停止', width=6, command=Exit, bg='Red', padx=2, pady=2).place(x=500, y=240)
mainloop ()函數告訴 Python 運行 Tkinter 事件循環并監聽事件(例如按鈕按下),直到您關閉窗口:
消息編碼器/解碼器的實際應用
在運行程序時,程序會顯示一個窗口,您必須在其中輸入消息、密鑰和模式。在使用 2009 密鑰選擇編碼模式時,消息 www.linuxmi.com 變為 wqnCp8KpYcKewpnCoMKowqrCncKbYcKVwp_Cnw==。

類似地,在復制編碼消息并將其粘貼回輸入以進行解碼時,您會得到原始消息。

使用 Python 檢查網絡安全
您可以使用 Python 編寫腳本來自動執行安全檢查、監控網絡和掃描漏洞。您可以使用它來創建強大的應用程序,這些應用程序使用身份驗證來降低攻擊者破壞您的數據的機會。
網絡安全專家經常使用 Python 構建 Web 應用程序防火墻來監控應用程序。他們可以使用機器學習執行威脅檢測分析。使用此架構,創建自定義滲透測試和驗證安全協議變得更加容易。