Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- import Tkinter
- import tkMessageBox
- from Tkinter import *
- import unicodedata
- okno = Tk()
- okno.title("Afinni sifra_Kryptologie")
- okno.resizable(False,False)
- var = StringVar()
- label = Label( okno, text="Afinni sifra", font="Arial, 20")
- label.grid()
- ramecek=Frame(okno)
- ramecek.grid()
- vstupnitextsifrovani=Label(ramecek,text="Zadej vstupni text k zasifrovani:")
- vstupnitextsifrovani.grid(row=1,column=0)
- vstupsifrovani=Entry(ramecek,bd=5)
- vstupsifrovani.grid(row=1,column=1)
- ksifrovani=[]
- kdesifrovani=[]
- 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"]
- nadpisvstupA=Label(ramecek, text="Zadej klic A:")
- nadpisvstupA.grid(row=2,column=0,sticky=W)
- vstupA=Entry(ramecek,bd=5)
- vstupA.grid(row=2,column=1)
- nadpisvstupB=Label(ramecek, text="Zadej klic B:")
- nadpisvstupB.grid(row=3,column=0,sticky=W)
- vstupB=Entry(ramecek,bd=5)
- vstupB.grid(row=3,column=1)
- vstupnitextdesifrovani=Label(ramecek,text="Zadej vstupni text k desifrovani:")
- vstupnitextdesifrovani.grid(row=4,column=0)
- vstup_desifrovani=Entry(ramecek,bd=5)
- vstup_desifrovani.grid(row=4,column=1)
- def funkcesifrovani():
- delka=len(vstupsifrovani.get()) #potrebuju delku vstupniho stringu
- A=vstupA.get() #potrebuji hodnotu klicu A,B
- B=vstupB.get()
- zasifrovane=[]
- if delka>=1 and 0<=int(A)<=25 and 1<=int(B)<=26:
- for i in range(delka):
- vstupsifrovani_text=vstupsifrovani.get().upper()
- """
- line=vstupsifrovani_text
- line = unicode(line, 'utf-8')
- line = unicodedata.normalize('NFKD', line)
- output = ''
- for c in line:
- if not unicodedata.combining(c):
- output += c
- """
- pismeno=vstupsifrovani_text[i]
- if pismeno != " ":
- ksifrovani.append(pismeno)
- else:
- ksifrovani.append("XQ")
- for i in range(delka):
- if ksifrovani[i] !="XQ":
- pozice=zakladniabeceda.index(ksifrovani[i])
- pozice_dve=(int(A)*pozice+int(B))%26
- zasifrovane.append(zakladniabeceda[pozice_dve])
- else:
- zasifrovane.append("XQ")
- vysledek="".join(zasifrovane)
- return var.set(vysledek)
- del zasifrovane
- else:
- tkMessageBox.showinfo("Chyba", "Byly zadany spatne vstupni parametry!")
- def funkce_desifrovani():
- delka=len(vstup_desifrovani.get()) #potrebuju delku vstupniho stringu
- A=vstupA.get() #potrebuji hodnotu klicu A,B
- B=vstupB.get()
- desifrovane=[]
- if delka>=1 and 0<=int(A)<=25 and 1<=int(B)<=26:
- vstup_desifrovani_text=vstup_desifrovani.get().upper()
- for i in range(delka):
- pismeno=vstup_desifrovani_text[i]
- if pismeno!="X" and 65<=ord(pismeno)<=90:
- kdesifrovani.append(pismeno)
- pozice=zakladniabeceda.index(kdesifrovani[i])
- pozice_dve=((pozice-int(B))*21)%26
- desifrovane.append(zakladniabeceda[pozice_dve])
- elif pismeno=="X":
- desifrovane.append(" ")
- else:
- pismeno=0
- vysledek="".join(desifrovane)
- return var.set(vysledek)
- del desifrovane
- else:
- tkMessageBox.showinfo("Chyba", "Byly zadany spatne vstupni parametry!")
- labelframe=LabelFrame(ramecek,text="Vysledek sifrovani/desifrovani:")
- labelframe.grid(rowspan=2,columnspan=2)
- text=Label(labelframe,textvariable=var)
- text.grid(padx=5,pady=10)
- 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")
- zakladni_abeceda_ukazka.grid()
- ramec_tlacitka=Frame(okno)
- ramec_tlacitka.grid()
- tlacitko_sifrovani=Button(ramec_tlacitka,text="Zasifrovat",command=funkcesifrovani,activebackground="#00ffff")
- tlacitko_desifrovani=Button(ramec_tlacitka,text="Desifrovat",command=funkce_desifrovani,activebackground="#0000cd")
- tlacitko_sifrovani.grid(row=6,column=0)
- tlacitko_desifrovani.grid(row=6,column=1,)
- tlacitko_konec=Button(ramec_tlacitka,text="Konec",command=okno.destroy,activebackground="#ff0000")
- tlacitko_konec.grid(row=6,rowspan=5,column=2)
- okno.mainloop()
Add Comment
Please, Sign In to add comment