k_vychodilova

krypto_odevzdane

Oct 27th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.37 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. ksifrovani=[]
  26.  
  27. kdesifrovani=[]
  28.  
  29. zakladniabeceda=["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"]
  30.  
  31. nadpisvstupA=Label(ramecek, text="Zadej klic A:")
  32. nadpisvstupA.grid(row=2,column=0,sticky=W)
  33. vstupA=Entry(ramecek,bd=5)
  34. vstupA.grid(row=2,column=1)
  35.  
  36.  
  37. nadpisvstupB=Label(ramecek, text="Zadej klic B:")
  38. nadpisvstupB.grid(row=3,column=0,sticky=W)
  39. vstupB=Entry(ramecek,bd=5)
  40. vstupB.grid(row=3,column=1)
  41.  
  42. vstupnitextdesifrovani=Label(ramecek,text="Zadej vstupni text k desifrovani:")
  43. vstupnitextdesifrovani.grid(row=4,column=0)
  44.  
  45. vstup_desifrovani=Entry(ramecek,bd=5)
  46. vstup_desifrovani.grid(row=4,column=1)
  47.  
  48. def funkcesifrovani():
  49.     delka=len(vstupsifrovani.get())     #potrebuju delku vstupniho stringu
  50.     A=vstupA.get()                      #potrebuji hodnotu klicu A,B
  51.     B=vstupB.get()
  52.     zasifrovane=[]
  53.     if delka>=1 and 0<=int(A)<=25 and 1<=int(B)<=26:
  54.  
  55.         for i in range(delka):
  56.             vstupsifrovani_text=vstupsifrovani.get().upper()
  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.             if pismeno != " ":
  69.                 ksifrovani.append(pismeno)
  70.             else:
  71.                 ksifrovani.append("XQ")
  72.         for i in range(delka):
  73.              if ksifrovani[i] !="XQ":
  74.                     pozice=zakladniabeceda.index(ksifrovani[i])
  75.                     pozice_dve=(int(A)*pozice+int(B))%26
  76.                     zasifrovane.append(zakladniabeceda[pozice_dve])
  77.              else:
  78.                     zasifrovane.append("XQ")
  79.         vysledek="".join(zasifrovane)
  80.         return var.set(vysledek)
  81.         del zasifrovane
  82.  
  83.  
  84.     else:
  85.         tkMessageBox.showinfo("Chyba", "Byly  zadany spatne vstupni parametry!")
  86.  
  87.  
  88. def funkce_desifrovani():
  89.     delka=len(vstup_desifrovani.get())     #potrebuju delku vstupniho stringu
  90.     A=vstupA.get()                          #potrebuji hodnotu klicu A,B
  91.     B=vstupB.get()
  92.     desifrovane=[]
  93.     if delka>=1 and 0<=int(A)<=25 and 1<=int(B)<=26:
  94.         vstup_desifrovani_text=vstup_desifrovani.get().upper()
  95.         for i in range(delka):
  96.             pismeno=vstup_desifrovani_text[i]
  97.             if pismeno!="X"  and 65<=ord(pismeno)<=90:
  98.                 kdesifrovani.append(pismeno)
  99.                 pozice=zakladniabeceda.index(kdesifrovani[i])
  100.                 pozice_dve=((pozice-int(B))*21)%26
  101.                 desifrovane.append(zakladniabeceda[pozice_dve])
  102.             elif pismeno=="X":
  103.                 desifrovane.append(" ")
  104.             else:
  105.                 pismeno=0
  106.         vysledek="".join(desifrovane)
  107.         return var.set(vysledek)
  108.         del desifrovane
  109.     else:
  110.          tkMessageBox.showinfo("Chyba", "Byly  zadany spatne vstupni parametry!")
  111.  
  112. labelframe=LabelFrame(ramecek,text="Vysledek sifrovani/desifrovani:")
  113. labelframe.grid(rowspan=2,columnspan=2)
  114.  
  115. text=Label(labelframe,textvariable=var)
  116. text.grid(padx=5,pady=10)
  117. zakladni_abeceda_ukazka=Label(labelframe,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")
  118. zakladni_abeceda_ukazka.grid()
  119.  
  120. ramec_tlacitka=Frame(okno)
  121. ramec_tlacitka.grid()
  122.  
  123. tlacitko_sifrovani=Button(ramec_tlacitka,text="Zasifrovat",command=funkcesifrovani,activebackground="#00ffff")
  124. tlacitko_desifrovani=Button(ramec_tlacitka,text="Desifrovat",command=funkce_desifrovani,activebackground="#0000cd")
  125. tlacitko_sifrovani.grid(row=6,column=0)
  126. tlacitko_desifrovani.grid(row=6,column=1,)
  127.  
  128. tlacitko_konec=Button(ramec_tlacitka,text="Konec",command=okno.destroy,activebackground="#ff0000")
  129. tlacitko_konec.grid(row=6,rowspan=5,column=2)
  130.  
  131.  
  132. okno.mainloop()
Add Comment
Please, Sign In to add comment