Prerequisite : Basics of Tkinter
Python offers multiple options for developing GUI (Graphical User Interface). Out of all the GUI methods, tkinter is most commonly used method. It is a standard Python interface to the Tk GUI toolkit shipped with Python. Python with tkinter outputs the fastest and easiest way to create the GUI applications.
Python provides the Tkinter toolkit to develop GUI applications. Now, it’s upto the imagination or necessity of developer, what he/she want to develop using this toolkit. Let’s try to implement a message encryption-decryption application according to the Vigenère cipher, which can encrypt the message using the key and can decrypt the encrypted hash using same key.
Modules used in the project :
- Tkinter -> GUI toolkit
- time
- datetime
- base64 -> Vigenère cipher
Below is the implementation of above idea :
# import tkinter modulefrom tkinter import * # import other necessery modulesimport randomimport timeimport datetime # creating root objectroot = Tk() # defining size of windowroot.geometry("1200x6000") # setting up the title of windowroot.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 functiondef qExit(): root.destroy() # Function to reset the windowdef Reset(): rand.set("") Msg.set("") key.set("") mode.set("") Result.set("") # referencelblReference = 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) # labelslblMsg = 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 cipherimport base64 # Function to encodedef 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 decodedef 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 buttonbtnTotal = 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 buttonbtnReset = 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 buttonbtnExit = 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 aliveroot.mainloop() |
Output :
Encrypt Window –
Decrypt Window –
Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.
To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course


