Python使用Tkinter进行消息编码和解码

【Python使用Tkinter进行消息编码和解码】先决条件:Tkinter的基础
Python提供了多种开发GUI(图形用户界面)的选项。在所有GUI方法中, tkinter是最常用的方法。它是Python随附的Tk GUI工具包的标准Python接口。带有tkinter的Python输出了创建GUI应用程序的最快, 最简单的方法。
Python提供了Tkinter工具包来开发GUI应用程序。现在, 取决于开发人员的想象力或必要性, 他/她想使用此工具包进行开发的内容。让我们尝试根据Vigenère密码实现消息加密/解密应用程序, 该应用程序可以使用密钥加密消息, 并可以使用同一密钥解密加密的哈希。

Modules used in the project :Tkinter-> GUI toolkit time datetime base64-> Vigenère cipher

下面是上述想法的实现:
# import tkinter module from tkinter import *# import other necessery modules import random import time import datetime# creating root object root = Tk()# defining size of window root.geometry( "1200x6000" )# setting up the title of window root.title( "Message Encryption and Decryption" )Tops = Frame(root, width = 1600 , relief = SUNKEN) Tops.pack(side = TOP)f1 = Frame(root, width = 800 , height = 700 , relief = SUNKEN) f1.pack(side = LEFT)# ============================================== #TIME # ============================================== localtime = time.asctime(time.localtime(time.time()))lblInfo = Label(Tops, font = ( 'helvetica' , 50 , 'bold' ), text = "SECRET MESSAGING \n Vigenère cipher" , fg = "Black" , bd = 10 , anchor = 'w' )lblInfo.grid(row = 0 , column = 0 )lblInfo = Label(Tops, font = ( 'arial' , 20 , 'bold' ), text = localtime, fg = "Steel Blue" , bd = 10 , anchor = 'w' )lblInfo.grid(row = 1 , column = 0 )rand = StringVar() Msg = StringVar() key = StringVar() mode = StringVar() Result = StringVar()# exit function def qExit(): root.destroy()# Function to reset the window def Reset(): rand. set ("") Msg. set ("") key. set ("") mode. set ("") Result. set ("")# reference lblReference = Label(f1, font = ( 'arial' , 16 , 'bold' ), text = "Name:" , bd = 16 , anchor = "w" )lblReference.grid(row = 0 , column = 0 )txtReference = Entry(f1, font = ( 'arial' , 16 , 'bold' ), textvariable = rand, bd = 10 , insertwidth = 4 , bg = "powder blue" , justify = 'right' )txtReference.grid(row = 0 , column = 1 )# labels lblMsg = Label(f1, font = ( 'arial' , 16 , 'bold' ), text = "MESSAGE" , bd = 16 , anchor = "w" )lblMsg.grid(row = 1 , column = 0 )txtMsg = Entry(f1, font = ( 'arial' , 16 , 'bold' ), textvariable = Msg, bd = 10 , insertwidth = 4 , bg = "powder blue" , justify = 'right' )txtMsg.grid(row = 1 , column = 1 )lblkey = Label(f1, font = ( 'arial' , 16 , 'bold' ), text = "KEY" , bd = 16 , anchor = "w" )lblkey.grid(row = 2 , column = 0 )txtkey = Entry(f1, font = ( 'arial' , 16 , 'bold' ), textvariable = key, bd = 10 , insertwidth = 4 , bg = "powder blue" , justify = 'right' )txtkey.grid(row = 2 , column = 1 )lblmode = Label(f1, font = ( 'arial' , 16 , 'bold' ), text = "MODE(e for encrypt, d for decrypt)" , bd = 16 , anchor = "w" )lblmode.grid(row = 3 , column = 0 )txtmode = Entry(f1, font = ( 'arial' , 16 , 'bold' ), textvariable = mode, bd = 10 , insertwidth = 4 , bg = "powder blue" , justify = 'right' )txtmode.grid(row = 3 , column = 1 )lblService = Label(f1, font = ( 'arial' , 16 , 'bold' ), text = "The Result-" , bd = 16 , anchor = "w" )lblService.grid(row = 2 , column = 2 )txtService = Entry(f1, font = ( 'arial' , 16 , 'bold' ), textvariable = Result, bd = 10 , insertwidth = 4 , bg = "powder blue" , justify = 'right' )txtService.grid(row = 2 , column = 3 )# Vigenère cipher import base64# Function to encode def encode(key, clear): enc = []for i in range ( len (clear)): key_c = key[i % len (key)] enc_c = chr (( ord (clear[i]) + ord (key_c)) % 256 )enc.append(enc_c)return base64.urlsafe_b64encode("".join(enc).encode()).decode()# Function to decode def decode(key, enc): dec = []enc = base64.urlsafe_b64decode(enc).decode() for i in range ( len (enc)): key_c = key[i % len (key)] dec_c = chr (( 256 + ord (enc[i]) - ord (key_c)) % 256 )dec.append(dec_c) return "".join(dec)def Ref(): print ( "Message= " , (Msg.get()))clear = Msg.get() k = key.get() m = mode.get()if (m = = 'e' ): Result. set (encode(k, clear)) else : Result. set (decode(k, clear))# Show message button btnTotal = Button(f1, padx = 16 , pady = 8 , bd = 16 , fg = "black" , font = ( 'arial' , 16 , 'bold' ), width = 10 , text = "Show Message" , bg = "powder blue" , command = Ref).grid(row = 7 , column = 1 )# Reset button btnReset = Button(f1, padx = 16 , pady = 8 , bd = 16 , fg = "black" , font = ( 'arial' , 16 , 'bold' ), width = 10 , text = "Reset" , bg = "green" , command = Reset).grid(row = 7 , column = 2 )# Exit button btnExit = Button(f1, padx = 16 , pady = 8 , bd = 16 , fg = "black" , font = ( 'arial' , 16 , 'bold' ), width = 10 , text = "Exit" , bg = "red" , command = qExit).grid(row = 7 , column = 3 )# keeps window alive root.mainloop()

输出:
加密窗口–
Python使用Tkinter进行消息编码和解码

文章图片
解密窗口–
Python使用Tkinter进行消息编码和解码

文章图片
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。

    推荐阅读