python tkinter_使用Tkinter进行Python消息编码解码

b9e84f1453744f739123cac4e69c2d25

Python提供了多种开发GUI(图形用户界面)的选项。在所有GUI方法中,tkinter是最常用的方法。它是Python随附的Tk GUI工具包的标准Python接口。带有tkinter的Python输出了创建GUI应用程序的最快,最简单的方法。

Python提供了Tkinter工具包来开发GUI应用程序。现在,取决于开发人员的想象力或必要性,他/她想使用此工具包进行开发的内容。让我们尝试根据Vigenère密码实现消息加密/解密应用程序,该应用程序可以使用密钥加密消息,并可以使用相同密钥解密加密的哈希。

项目中使用的模块:

  • 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  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() 

输出

加密窗口:

6b39afd607e746b6995d213b9baf7507

解密窗口:

24322406447944a78bfa41d7db0bf873
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值