新聞中心
Python 的 Base64 模塊是一個(gè)強(qiáng)大的消息編碼和解碼工具。您可以使用它通過 Internet 安全地發(fā)送數(shù)據(jù)。使用這種編碼來保護(hù)敏感數(shù)據(jù)免受惡意黑客攻擊是網(wǎng)站、應(yīng)用程序和通信服務(wù)的標(biāo)準(zhǔn)程序。

Base64 模塊有一對函數(shù),可用于對消息進(jìn)行編碼和解碼,從而為數(shù)據(jù)傳輸增加一些額外的安全性。
Tkinter 和 Base64 模塊
Tkinter 允許您創(chuàng)建桌面應(yīng)用程序。它提供了各種小部件,例如按鈕、標(biāo)簽和文本框,可以輕松開發(fā)應(yīng)用程序而無需付出太多努力。您可以使用 Tkinter 創(chuàng)建令人難以置信的 GUI 程序。您可以構(gòu)建一個(gè)簡單的計(jì)算器、一個(gè)待辦事項(xiàng)列表應(yīng)用程序或一個(gè)打字測試游戲。要將 Tkinter 安裝到您的系統(tǒng)中,請打開您的終端并輸入:
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
sudo apt install python3-tk
BASE64 提供了將二進(jìn)制數(shù)據(jù)編碼為 ASCII 并將其解碼回二進(jìn)制的功能。它支持標(biāo)準(zhǔn)和 URL 安全編碼,使信息傳輸更加安全。要將字符串轉(zhuǎn)換為 Base64 字符,請獲取每個(gè)字符的 ASCII 值并計(jì)算其 8 位二進(jìn)制。通過重新分組數(shù)字并將它們重新轉(zhuǎn)換為各自的十進(jìn)制值來轉(zhuǎn)換這塊 6 位。最后使用Base64編碼表,得到每個(gè)小數(shù)的Base64值。
如何在 Python 中編碼和解碼消息
首先導(dǎo)入這兩個(gè)模塊。初始化 Tkinter 實(shí)例并顯示根窗口。設(shè)置窗口的標(biāo)題、尺寸(以像素為單位)和背景顏色。
from tkinter import *
import base64
root = Tk()
root.geometry('800x500')
root.configure(background='aqua')
root.title("使用 Python 對消息進(jìn)行編碼和解碼")
使用標(biāo)簽小部件顯示有關(guān)應(yīng)用程序的有用信息。該標(biāo)簽接受您要放置它的父窗口、它應(yīng)該顯示的文本以及字體樣式、顏色和背景顏色。在將小部件放入父小部件之前,使用 pack() 在布局塊中組織小部件。StringVar 可以更輕松地控制標(biāo)簽或條目等小部件的值。
Label(root, text='Python消息編碼器和解碼器', font='arial 25 bold', fg='white', bg="purple").pack()
Text = StringVar()
key = StringVar()
mode = StringVar()
Result = StringVar()
定義一個(gè)函數(shù) Encode(),它接受一個(gè)用于編碼和解碼的密鑰以及消息。定義一個(gè)空列表并迭代到消息的長度。將 key 的索引設(shè)置為操作的模數(shù),并將其值存儲(chǔ)在變量 key_c 中。使用 ord() 獲取字符的 Unicode 值,使用 chr() 獲取表示指定值的字符。
將此值附加到列表中。使用空字符串連接列表的每個(gè)元素,并使用 encode() 方法返回字符串的 utf-8 編碼版本。base64.urlsafe_b64encode ()方法對此輸入進(jìn)行編碼,并將 – 替換為 + 并將 _ 替換為 /。
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()
定義一個(gè)函數(shù)Decode(),它接受用于編碼和解碼的密鑰以及消息。定義一個(gè)空列表并解碼消息。迭代到消息的長度并將操作的模數(shù)設(shè)置為索引并將其值存儲(chǔ)在key_c中。附加 Unicode 字符串消息解碼的字符,如下所示。返回解碼后的字符串。
定義一個(gè)函數(shù)Mode(),它獲取用戶在 Entry 小部件中輸入的模式,并根據(jù)選擇調(diào)用適當(dāng)?shù)暮瘮?shù)。如果用戶未輸入有效響應(yīng),則顯示一條錯(cuò)誤消息:
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')
定義一個(gè)函數(shù)Exit()來殺死和終止在后臺(tái)運(yùn)行的解釋器。定義一個(gè)函數(shù) Reset() 來清除 Entry 字段的內(nèi)容:
def Exit():
????root.destroy()
def Reset():
????Text.set("")
????key.set("")
????mode.set("")
????Result.set("")
為消息、密鑰、模式和文本定義標(biāo)簽和條目小部件。指定要放置它們的父窗口、字體樣式、文本和背景顏色。還要設(shè)置坐標(biāo)來組織它們。
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()
同樣,定義三個(gè)按鈕來查看結(jié)果、重置字段和停止程序。這些按鈕有一個(gè)名為 command 的特殊參數(shù),它接受一個(gè)函數(shù)并在單擊時(shí)執(zhí)行它:
Button(root, font='arial 15 bold', text='結(jié)果', 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 ()函數(shù)告訴 Python 運(yùn)行 Tkinter 事件循環(huán)并監(jiān)聽事件(例如按鈕按下),直到您關(guān)閉窗口:
root.mainloop()
消息編碼器/解碼器的實(shí)際應(yīng)用
在運(yùn)行程序時(shí),程序會(huì)顯示一個(gè)窗口,您必須在其中輸入消息、密鑰和模式。在使用 2009 密鑰選擇編碼模式時(shí),消息 www.linuxmi.com 變?yōu)?nbsp;wqnCp8KpYcKewpnCoMKowqrCncKbYcKVwp_Cnw==。
類似地,在復(fù)制編碼消息并將其粘貼回輸入以進(jìn)行解碼時(shí),您會(huì)得到原始消息。
使用 Python 檢查網(wǎng)絡(luò)安全
您可以使用 Python 編寫腳本來自動(dòng)執(zhí)行安全檢查、監(jiān)控網(wǎng)絡(luò)和掃描漏洞。您可以使用它來創(chuàng)建強(qiáng)大的應(yīng)用程序,這些應(yīng)用程序使用身份驗(yàn)證來降低攻擊者破壞您的數(shù)據(jù)的機(jī)會(huì)。
網(wǎng)絡(luò)安全專家經(jīng)常使用 Python 構(gòu)建 Web 應(yīng)用程序防火墻來監(jiān)控應(yīng)用程序。他們可以使用機(jī)器學(xué)習(xí)執(zhí)行威脅檢測分析。使用此架構(gòu),創(chuàng)建自定義滲透測試和驗(yàn)證安全協(xié)議變得更加容易。
本文題目:如何使用Python和Base64對消息進(jìn)行編碼和解碼
文章源于:http://m.fisionsoft.com.cn/article/dhjgdcp.html


咨詢
建站咨詢
