Advertisement
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)
- 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()
- if A=="" or B=="":
- tkMessageBox.showinfo("Chyba", "Byly zadany spatne vstupni parametry!")
- return
- zasifrovane = []
- ksifrovani = []
- if delka >= 1 and 0 <= int(A) <= 25 and 1 <= int(B) <= 26:
- vstupsifrovani_text = vstupsifrovani.get().upper()
- for i in range(delka):
- """
- 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]
- ksifrovani.append(pismeno)
- for i in range(delka):
- if ksifrovani[i] == " ":
- zasifrovane.append("XQW")
- continue
- pozice = zakladniabeceda.index(ksifrovani[i])
- pozice_dve = (int(A) * pozice + int(B)) % 26
- zasifrovane.append(zakladniabeceda[pozice_dve])
- vysledek = "".join(zasifrovane)
- print vysledek
- return var.set(vysledek)
- else:
- tkMessageBox.showinfo("Chyba", "Byly zadany spatne vstupni parametry!")
- def funkce_desifrovani():
- A = vstupA.get() # potrebuji hodnotu klicu A,B
- B = vstupB.get()
- if A=="" or B=="":
- tkMessageBox.showinfo("Chyba", "Byly zadany spatne vstupni parametry!")
- return
- desifrovane = []
- kdesifrovani = []
- if 0 <= int(A) <= 25 and 1 <= int(B) <= 26:
- vstup_desifrovani_text = vstup_desifrovani.get().upper()
- vstup_desifrovani_text = vstup_desifrovani_text.replace("XQW", " ")
- delka = len(vstup_desifrovani_text)
- if delka == 0:
- tkMessageBox.showinfo("Chyba", "Byly zadany spatne vstupni parametry!")
- return
- for i in range(delka):
- pismeno = vstup_desifrovani_text[i]
- if "A" <= pismeno <= "Z":
- kdesifrovani.append(pismeno)
- pozice = zakladniabeceda.index(kdesifrovani[i])
- pozice_dve = ((pozice - int(B)) * 21) % 26
- desifrovane.append(zakladniabeceda[pozice_dve])
- elif pismeno == " ":
- kdesifrovani.append(" ")
- desifrovane.append(" ")
- vysledek = "".join(desifrovane)
- return var.set(vysledek)
- 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, )
- def reset():
- vstupsifrovani.delete(0,END)
- var.set("")
- vstup_desifrovani.delete(0,END)
- vstupA.delete(0,END)
- vstupB.delete(0,END)
- tlacitko_konec = Button(ramec_tlacitka, text="RESET", command=reset, activebackground="#ff0000")
- tlacitko_konec.grid(row=6, rowspan=5, column=2)
- okno.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement