自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何使用 Python 和 Base64 對(duì)消息進(jìn)行編碼和解碼

開發(fā)
這個(gè) GUI 應(yīng)用程序既簡(jiǎn)單又方便,構(gòu)建它將幫助您練習(xí) Python 技能。

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

Base64 模塊有一對(duì)函數(shù),可用于對(duì)消息進(jìn)行編碼和解碼,從而為數(shù)據(jù)傳輸增加一些額外的安全性。

Tkinter 和 Base64 模塊

Tkinter 允許您創(chuàng)建桌面應(yīng)用程序。它提供了各種小部件,例如按鈕、標(biāo)簽和文本框,可以輕松開發(fā)應(yīng)用程序而無(wú)需付出太多努力。您可以使用 Tkinter 創(chuàng)建令人難以置信的 GUI 程序。您可以構(gòu)建一個(gè)簡(jiǎn)單的計(jì)算器、一個(gè)待辦事項(xiàng)列表應(yīng)用程序或一個(gè)打字測(cè)試游戲。要將 Tkinter 安裝到您的系統(tǒng)中,請(qǐ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 字符,請(qǐng)獲取每個(gè)字符的 ASCII 值并計(jì)算其 8 位二進(jìn)制。通過(guò)重新分組數(shù)字并將它們重新轉(zhuǎn)換為各自的十進(jìn)制值來(lái)轉(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 對(duì)消息進(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è)空列表并迭代到消息的長(zhǎng)度。將 key 的索引設(shè)置為操作的模數(shù),并將其值存儲(chǔ)在變量 key_c 中。使用 ord() 獲取字符的 Unicode 值,使用 chr() 獲取表示指定值的字符。

將此值附加到列表中。使用空字符串連接列表的每個(gè)元素,并使用 encode() 方法返回字符串的 utf-8 編碼版本。base64.urlsafe_b64encode ()方法對(duì)此輸入進(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è)空列表并解碼消息。迭代到消息的長(zhǎng)度并將操作的模數(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()來(lái)殺死和終止在后臺(tái)運(yùn)行的解釋器。定義一個(gè)函數(shù) Reset() 來(lái)清除 Entry 字段的內(nèi)容:

def Exit():
????root.destroy()

def Reset():
????Text.set("")
????key.set("")
????mode.set("")
????Result.set("")

為消息、密鑰、模式和文本定義標(biāo)簽和條目小部件。指定要放置它們的父窗口、字體樣式、文本和背景顏色。還要設(shè)置坐標(biāo)來(lái)組織它們。

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è)按鈕來(lái)查看結(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 編寫腳本來(lái)自動(dòng)執(zhí)行安全檢查、監(jiān)控網(wǎng)絡(luò)和掃描漏洞。您可以使用它來(lái)創(chuàng)建強(qiáng)大的應(yīng)用程序,這些應(yīng)用程序使用身份驗(yàn)證來(lái)降低攻擊者破壞您的數(shù)據(jù)的機(jī)會(huì)。

網(wǎng)絡(luò)安全專家經(jīng)常使用 Python 構(gòu)建 Web 應(yīng)用程序防火墻來(lái)監(jiān)控應(yīng)用程序。他們可以使用機(jī)器學(xué)習(xí)執(zhí)行威脅檢測(cè)分析。使用此架構(gòu),創(chuàng)建自定義滲透測(cè)試和驗(yàn)證安全協(xié)議變得更加容易。

責(zé)任編輯:趙寧寧 來(lái)源: Linux迷
相關(guān)推薦

2014-02-20 10:28:28

JavaScriptBase64

2022-10-29 19:58:09

Base64Bashshell

2024-07-31 10:22:49

Go語(yǔ)言編碼

2021-09-07 08:59:09

編碼Base64解碼

2024-07-11 08:42:57

2025-02-11 00:00:10

Base64編碼二進(jìn)制

2024-02-28 23:07:42

GolangBase64編碼

2021-03-05 09:10:19

base64編碼

2023-11-07 08:35:26

2022-06-06 08:31:05

Base64編碼Base58

2019-07-23 08:55:46

Base64編碼底層

2010-03-03 16:14:05

Python base

2016-12-13 13:50:06

JAVA轉(zhuǎn)換Base64

2023-02-15 08:10:06

2021-02-05 05:26:33

字節(jié)ASCII控制

2019-08-09 11:40:38

JavaScriptCSS技術(shù)

2021-11-25 08:11:47

JS網(wǎng)站信息

2013-01-24 09:29:16

2021-08-26 05:27:08

Base64 字節(jié)流算法

2016-10-13 13:12:43

微信小程序javascript
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)