├── vigenere.jpg └── vigenere_decipher.py /vigenere.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdnahom/Vigenere-decryption/master/vigenere.jpg -------------------------------------------------------------------------------- /vigenere_decipher.py: -------------------------------------------------------------------------------- 1 | import tkinter as tk 2 | import tkinter.font as tkFont 3 | from PIL import ImageTk, Image 4 | 5 | capital_alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZ' 6 | letter_to_index=dict(zip(capital_alphabet,range(len(capital_alphabet)))) 7 | # print(letter_to_index) 8 | index_to_letter=dict(zip(range(len(capital_alphabet)),capital_alphabet)) 9 | # print(index_to_letter) 10 | 11 | root=tk.Tk() 12 | # root.geometry("500x500") 13 | root.configure(bg="white") 14 | logo=Image.open('vigenere.jpg') 15 | logo=ImageTk.PhotoImage(logo) 16 | image_lable=tk.Label(image=logo) 17 | image_lable.image=logo 18 | image_lable.pack() 19 | Desired_font = tk.font.Font( family = "Comic Sans MS", 20 | size = 20, 21 | weight = "bold") 22 | Desired_font2 = tk.font.Font( family = "Comic Sans MS", 23 | size = 10, 24 | weight = "bold") 25 | title1=tk.Label(root,text='Cipher',font=Desired_font,bg="white") 26 | title1.pack() 27 | cipher=tk.Entry(root,width=50,borderwidth=5) 28 | cipher.pack() 29 | title2=tk.Label(root,text='Key',font=Desired_font,bg="white") 30 | title2.pack() 31 | key=tk.Entry(root, width=50,borderwidth=5) 32 | key.pack() 33 | def decrypt(cipher,key): 34 | decrypted_message='' 35 | splited_cipher=[cipher[i:i + len(key)]for i in range(0,len(cipher),len(key))] 36 | for each_splited_cipher in splited_cipher: 37 | i=0 38 | for letter in each_splited_cipher: 39 | number=(letter_to_index[letter]-letter_to_index[key[i]])%len(capital_alphabet) 40 | decrypted_message+=index_to_letter[number] 41 | i+=1 42 | return decrypted_message 43 | def vigenere_decipher(): 44 | c=cipher.get().upper() 45 | k= key.get().upper() 46 | d=decrypt(c,k) 47 | output=tk.Label(root,text=d ,font=Desired_font2) 48 | output.pack() 49 | 50 | mybutton=tk.Button(root,text="Decipher",bg="#20bebe",fg="white",height="2",width="15",command=vigenere_decipher,borderwidth=5) 51 | mybutton.pack() 52 | root.mainloop() 53 | 54 | # def encrypt(message,key): 55 | # encrypted='' 56 | # split_message=[message[i:i + len(key)]for i in range(0,len(message),len(key))] 57 | # for each_split in split_message: 58 | # i=0 59 | # for letter in each_split: 60 | # number=(letter_to_index[letter]+letter_to_index[key[i]])%len(capital_alphabet) 61 | # encrypted+=index_to_letter[number] 62 | # i+=1 63 | # return encrypted --------------------------------------------------------------------------------