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 应用程序防火墙来监控应用程序。他们可以使用机器学习执行威胁检测分析。使用此架构,创建自定义渗透测试和验证安全协议变得更加容易。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341