Advertisement
k_vychodilova

Krypto_2_final

Oct 23rd, 2017
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.94 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. import Tkinter
  3. import tkMessageBox
  4.  
  5. from Tkinter import *
  6. import unicodedata
  7.  
  8. okno = Tk()
  9. okno.title("Afinni sifra_Kryptologie")
  10. okno.resizable(False, False)
  11.  
  12. var = StringVar()
  13. label = Label(okno, text="Afinni sifra", font="Arial, 20")
  14. label.grid()
  15.  
  16. ramecek = Frame(okno)
  17. ramecek.grid()
  18.  
  19. vstupnitextsifrovani = Label(ramecek, text="Zadej vstupni text k zasifrovani:")
  20. vstupnitextsifrovani.grid(row=1, column=0)
  21.  
  22. vstupsifrovani = Entry(ramecek, bd=5)
  23. vstupsifrovani.grid(row=1, column=1)
  24.  
  25. zakladniabeceda = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
  26.                    "U", "V", "W", "X", "Y", "Z"]
  27.  
  28. nadpisvstupA = Label(ramecek, text="Zadej klic A:")
  29. nadpisvstupA.grid(row=2, column=0, sticky=W)
  30. vstupA = Entry(ramecek, bd=5)
  31. vstupA.grid(row=2, column=1)
  32.  
  33. nadpisvstupB = Label(ramecek, text="Zadej klic B:")
  34. nadpisvstupB.grid(row=3, column=0, sticky=W)
  35. vstupB = Entry(ramecek, bd=5)
  36. vstupB.grid(row=3, column=1)
  37.  
  38. vstupnitextdesifrovani = Label(ramecek, text="Zadej vstupni text k desifrovani:")
  39. vstupnitextdesifrovani.grid(row=4, column=0)
  40.  
  41. vstup_desifrovani = Entry(ramecek, bd=5)
  42. vstup_desifrovani.grid(row=4, column=1)
  43.  
  44.  
  45. def funkcesifrovani():
  46.     delka = len(vstupsifrovani.get())  # potrebuju delku vstupniho stringu
  47.     A = vstupA.get()                   # potrebuji hodnotu klicu A,B
  48.     B = vstupB.get()
  49.     if A=="" or B=="":
  50.         tkMessageBox.showinfo("Chyba", "Byly  zadany spatne vstupni parametry!")
  51.         return
  52.     zasifrovane = []
  53.     ksifrovani = []
  54.     if delka >= 1 and 0 <= int(A) <= 25 and 1 <= int(B) <= 26:
  55.         vstupsifrovani_text = vstupsifrovani.get().upper()
  56.         for i in range(delka):
  57.             """
  58.            line=vstupsifrovani_text
  59.            line = unicode(line, 'utf-8')
  60.            line = unicodedata.normalize('NFKD', line)
  61.            output = ''
  62.  
  63.            for c in line:
  64.                if not unicodedata.combining(c):
  65.                    output += c
  66.            """
  67.             pismeno = vstupsifrovani_text[i]
  68.             ksifrovani.append(pismeno)
  69.  
  70.         for i in range(delka):
  71.             if ksifrovani[i] == " ":
  72.                 zasifrovane.append("XQW")
  73.                 continue
  74.             pozice = zakladniabeceda.index(ksifrovani[i])
  75.  
  76.             pozice_dve = (int(A) * pozice + int(B)) % 26
  77.             zasifrovane.append(zakladniabeceda[pozice_dve])
  78.  
  79.         vysledek = "".join(zasifrovane)
  80.         print vysledek
  81.         return var.set(vysledek)
  82.  
  83.  
  84.  
  85.  
  86.     else:
  87.         tkMessageBox.showinfo("Chyba", "Byly  zadany spatne vstupni parametry!")
  88.  
  89.  
  90. def funkce_desifrovani():
  91.  
  92.     A = vstupA.get()  # potrebuji hodnotu klicu A,B
  93.     B = vstupB.get()
  94.     if A=="" or B=="":
  95.         tkMessageBox.showinfo("Chyba", "Byly  zadany spatne vstupni parametry!")
  96.         return
  97.     desifrovane = []
  98.     kdesifrovani = []
  99.     if 0 <= int(A) <= 25 and 1 <= int(B) <= 26:
  100.         vstup_desifrovani_text = vstup_desifrovani.get().upper()
  101.         vstup_desifrovani_text = vstup_desifrovani_text.replace("XQW", " ")
  102.         delka = len(vstup_desifrovani_text)
  103.         if delka == 0:
  104.             tkMessageBox.showinfo("Chyba", "Byly  zadany spatne vstupni parametry!")
  105.             return
  106.         for i in range(delka):
  107.             pismeno = vstup_desifrovani_text[i]
  108.             if "A" <= pismeno <= "Z":
  109.                 kdesifrovani.append(pismeno)
  110.                 pozice = zakladniabeceda.index(kdesifrovani[i])
  111.                 pozice_dve = ((pozice - int(B)) * 21) % 26
  112.                 desifrovane.append(zakladniabeceda[pozice_dve])
  113.             elif pismeno == " ":
  114.                 kdesifrovani.append(" ")
  115.                 desifrovane.append(" ")
  116.  
  117.         vysledek = "".join(desifrovane)
  118.         return var.set(vysledek)
  119.  
  120.     else:
  121.         tkMessageBox.showinfo("Chyba", "Byly  zadany spatne vstupni parametry!")
  122.  
  123.  
  124. labelframe = LabelFrame(ramecek, text="Vysledek sifrovani/desifrovani:")
  125. labelframe.grid(rowspan=2, columnspan=2)
  126.  
  127. text = Label(labelframe, textvariable=var)
  128. text.grid(padx=5, pady=10)
  129. zakladni_abeceda_ukazka = Label(labelframe,
  130.                                 text="Zakladni abeceda:\n A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z")
  131. zakladni_abeceda_ukazka.grid()
  132.  
  133. ramec_tlacitka = Frame(okno)
  134. ramec_tlacitka.grid()
  135.  
  136. tlacitko_sifrovani = Button(ramec_tlacitka, text="Zasifrovat", command=funkcesifrovani, activebackground="#00ffff")
  137. tlacitko_desifrovani = Button(ramec_tlacitka, text="Desifrovat", command=funkce_desifrovani, activebackground="#0000cd")
  138. tlacitko_sifrovani.grid(row=6, column=0)
  139. tlacitko_desifrovani.grid(row=6, column=1, )
  140.  
  141. def reset():
  142.     vstupsifrovani.delete(0,END)
  143.     var.set("")
  144.     vstup_desifrovani.delete(0,END)
  145.     vstupA.delete(0,END)
  146.     vstupB.delete(0,END)
  147.  
  148.  
  149. tlacitko_konec = Button(ramec_tlacitka, text="RESET", command=reset, activebackground="#ff0000")
  150. tlacitko_konec.grid(row=6, rowspan=5, column=2)
  151.  
  152. okno.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement