使用Tkinter对信息进行编码-解密
加密是将文本或信息转换为无法识别的形式的方法,而解密确实是从加密后的信息中获得原始形式的方法。
信息加密和解密的方法包括首先将原始文本变为密码文本,这是一个随机的、无意义的文本。这种方法被称为编码。解密是指从密码文本中恢复原始文本的过程。加密-解密过程是这一程序的又一名称。
这篇文章的目标是使用一个单一的密钥来加密和解密信息。base64库和Tkinter工具包将被用来建立这个项目。
用户必须在本文中输入要加密或解码的文本。编码和解码过程必须由用户在特定的模式下选择。同一消息的编码和解码操作必须使用相同的密钥进行。
我们将利用Python、Tkinter和base64库的基础知识来开发这个项目。
一个将二进制信息编码为ASCII字符,然后将这些ASCII经典字符解码为二进制数据的函数由标准GUI Python库Tkinter的base64模块提供。
在命令提示符下,我们使用 pip install 命令来安装这个库。
这些是开发消息编码和解码的Python代码的步骤。
- 添加一个模块
- 建立一个显示窗口
- 解释功能
- 定义按钮和标签。
所以,这就是这个Python项目所要做的。让我们开始吧。
开发消息编码-解码项目步骤
信息开发编码-解码的步骤
第1步 .使用tkinter import导入库
from tkinter import *
import base64
导入base64的tkinter库是第1步。
第2步 . 使Tk()根成为初始窗口根。
geometry('550x350')
root. resizable(0,0)
root. title("DataFlair - Message Encode and Decode DataFlair - Message Encode and Decode")
- Tk()初始化了tkinter,结果创建了一个窗口。
- 窗口的高度和宽度是用
- geometry()来调整(0,0) 设置窗口的固定尺寸
- title()设置窗口的标题
Label(root, text ='ENCODE & DECODE', font = 'arial 22 bold').pack()
Label(root, text ='DataFlair', font = 'arial 22 bold').pack(side =BOTTOM)
使用Label()部件显示一行或多行用户无法编辑的文本。
该窗口被称为根。
我们在标签上显示文本。
用来书写文本的字体。
组建一个结构化的窗口部件块。
第3步.定义变量
Mess = StringVar()
private_key = StringVar()
Trav = StringVar()
Ans = StringVar()
解释
- 要加密和解码的信息存储在Mess变量中。
- 用于编码和解码的私钥被存储在私钥变量中。
- Trav被用来选择编码和解码。
- 并保存结果。
第4步 . 编码的功能
def Encode(key,mess):
cn=[]
for i in range(len(mess)):
key_m = key[i % len(key)]
enc.append(chr((ord(message[m]) + ord(key_m)) % 266))
return base64.urlsafe_b64encode("".join(cn).encode()).decode()
第5步, 将功能转化为代码
def Decode(key,mess):
dec1n=[]
mess = base64.urlsafe_b64decode(mess).decode()
for i in range(len(mess)):
key m = key[i % len(key)]
dec1n.append(chr((256 + ord(mess[i])- ord(key_m)) % 256))
return "".join(dec1n)
解释 。
- 函数chr将一个整数值转换成一个字符串,然后存储并返回”。使用join(dec),得到结果。
- 对输入的材料进行解码,然后输出结果的二进制版本。
- 循环往复,直到信息完成。
第6步。功能设置为模式
def Mode():
if(mode.get() == 'g'):
Ans.set(Encode(private_key.get(), Mess.get()))
elif(mode.get() == 'b'):
Ans.set(Decode(private_key.get(), Mess.get()))
else:
Ans.set('Invalid Mode')
解释一下
- 如果用户定义的模式是 “e”,这个Encode()函数确实会被调用。
- 如果模式设置为 “d”,将调用Decode()方法,否则,打印 “无效”。
- 来自get private key()和get text()函数的值将作为参数传递给encode()和decode()函数。
第7步退出窗口 。
当应用程序被root.destroy()终止时, 主循环 将结束。
第8步.窗口重置功能
def Reset():
Mess.set("")
private_key.set("")
mode.set("")
Ans.set("")
第9步。按钮和标签
根是用来指出现在我们窗口中的文本,并以标签字体显示。Insertwidth是用来设置插入的宽度的。用于获取当前文本的textvariable被调用,所以当按钮被点击时,将光标的背景颜色设置为入口小部件根。当我们需要启动我们的应用程序时,方法mainloop()被调用。
输出