Написана программка по шифру Гронсфельда, каждую строку необходимо описать и пояснить, что в ней происходит и используется. Особенно важны два блока: шифрование и дешифрование текста. Прошу помощи!!!
#!/usr/bin/env python
#-*- coding: utf8 -*-
from Tkinter import *
from tkFileDialog import *
from random import randint
class App(object):
def __init__(self):
self.key = [3, 1, 4, 1, 5]
self.root = Tk()
self.btn_open = Button(self.root, command=self.open_file, text = 'Open')
self.btn_open.pack()
self.txt = Text(self.root)
self.txt.pack()
self.btn_enc = Button(self.root, command=self.encode, text = 'Encode')
self.btn_enc.pack()
self.btn_dec = Button(self.root, command=self.decode, text = 'Decode')
self.btn_dec.pack()
def open_file(self):
self.txt.delete('1.0',END)
self.txt.insert(INSERT, askopenfile().read())
def encode(self):
indata=self.txt.get('1.0',END)
outdata = ''
if len(indata)>0 and indata[-1]=='\n':
indata = indata[:-1]
i = 0
for sym in indata:
if sym>='A' and sym<='Z':
outdata+=chr(((ord(sym)-ord('A'))+self.key[i])%(ord('Z')-ord('A')+1)+ord('A'))
elif sym>='a' and sym<='z':
outdata+=chr(((ord(sym)-ord('a'))+self.key[i])%(ord('z')-ord('a')+1)+ord('a'))
else:
outdata += sym
i += 1
if i == len(self.key):
i = 0
self.txt.delete('1.0',END)
self.txt.insert(INSERT, outdata)
def decode(self):
indata=self.txt.get('1.0',END)
outdata = ''
if len(indata)>0 and indata[-1]=='\n':
indata = indata[:-1]
i = 0
for sym in indata:
if sym>='A' and sym<='Z':
outdata+=chr(((ord(sym)-ord('A'))-self.key[i])%(ord('Z')-ord('A')+1)+ord('A'))
elif sym>='a' and sym<='z':
outdata+=chr(((ord(sym)-ord('a'))-self.key[i])%(ord('z')-ord('a')+1)+ord('a'))
else:
outdata += sym
i += 1
if i == len(self.key):
i = 0
self.txt.delete('1.0',END)
self.txt.insert(INSERT, outdata)
def on_execute(self):
self.root.mainloop()
if __name__ == '__main__':
app = App()
app.on_execute()