Ich habe ein Playfair-Verschlüsselungsprogramm geschrieben mit GUI und an sich funktioniert es auch, außer ein Problem, in meinem
Hauptprogramm:
Code: Alles auswählen
# -*- coding: cp1252 -*-
class Playfair:
def __init__(self, klartext, keytext):
self.klartext = klartext
self.keytext = keytext
codiertext = ''
codieralphabet = ''
self.globall = ''
def textformatieren(self):
a = str(self.klartext)
a = self.klartext.upper()
text = ''
for i in range(len(a)):
if a[i] == 'Ä':
text = text + 'AE'
elif a[i] == 'Ö':
text = text + 'OE'
elif a[i] == 'Ü':
text = text + 'UE'
elif a[i] == 'ß':
text = text + 'SZ'
elif a[i] == '"':
text = text + ''
elif a[i] == "'":
text = text + ''
elif a[i] == ".":
text = text + ''
elif a[i] == " ":
text = text + ''
elif a[i] == "J":
text = text + 'I'
else:
text = text + a[i]
text2=''
for e in range(len(text)-1):
if text[e] == text[e+1]:
text2 = text2 + text[e] + "X" #bei doppelten Zeichen nur erstes beachten
else:
text2 = text2 + text[e]
text2 = text2 + text[len(text)-1]
if len(text2) % 2 == 1:
text2 =text2 + "X"
self.codiertext = text2
print text2
def alphabetisieren(self):
b = str(self.keytext)
b = self.keytext.upper()
text = ''
keytextalphabet = 'ABCDEFGHIKLMNOPQRSTUVWXYZ'
#erweitert mit der Begruendung s.u.
b += keytextalphabet
for i in range(len(b)):
if b[i] == 'Ä':
text = text + 'AE'
elif b[i] == 'Ö':
text = text + 'OE'
elif b[i] == 'Ü':
text = text + 'UE'
elif b[i] == 'ß':
text = text + 'SZ'
elif b[i] == '"':
text = text + ''
elif b[i] == "'":
text = text + ''
elif b[i] == ".":
text = text + ''
elif b[i] == " ":
text = text + ''
elif b[i] == "J":
text = text + 'I'
else:
text = text + b[i]
text3 = ''
keytextneu = ''
for e in range(len(text)):
if text3.find(text[e]) == -1:
text3 = text3 + text[e]
self.codieralphabet = text3
print text3
def codieren(self):
#codiertext = self.textformatieren.text2
ausgabetext=''
final=''
while len(self.codiertext) <> 0:
erstebeide = self.codiertext[0:2]
pos1 = self.codieralphabet.find(erstebeide[0])
pos2 = self.codieralphabet.find(erstebeide[1])
self.codiertext = self.codiertext[2:]
y1 = pos1 / 5
x1 = pos1 % 5
y2 = pos2 / 5
x2 = pos2 % 5
if y1 == y2:
if x1 == 4:
x1 = 0
else: x1 += 1
if x2 == 4:
x2 = 0
else: x2 += 1
z1 = y1 * 5 + x1
z2 = y2 * 5 + x2
else:
if x1 == x2:
if y1 == 4:
y1 = 0
else: y1 += 1
if y2 == 4:
y2 = 0
else: y2 += 1
z1 = y1 * 5 + x1
z2 = y2 * 5 + x2
else:
z1 = 5 * y1 + x2
z2 = 5 * y2 + x1
ausgabetext = ausgabetext + self.codieralphabet[z1]+self.codieralphabet[z2]
self.globall = ausgabetext
return "global:" + self.globall
Code: Alles auswählen
# -*- coding: utf-8 -*-
from Tkinter import *
from playfair_beforereachinggold import *
class Playfair_GUI(Frame):
def __init__(self, master):
Frame.__init__(self, master)
self.master.title("Playfair")
self.place(x=0, y=0)
self.config(width=900, height=330)
self.createWidgets()
def createWidgets(self):
self.clearword = Label(self, text = "Bitte zu verschlüsselndes Wort eingeben:")
self.clearword.place(x=50, y = 10)
self.clearword = Label(self, text = "Bitte Schlüsselwort eingeben:")
self.clearword.place(x=320, y = 10)
self.eingabe1 = Text(self)
self.eingabe1.config(width=30, height=15)
self.eingabe1.insert('0.0','Oh schaurig ist')
self.eingabe1.place(x=50, y=30)
self.eingabe2 = Text(self)
self.eingabe2.config(width=30, height=15)
self.eingabe2.insert('0.0','derknabeimmoor')
self.eingabe2.place(x=320, y=30)
self.bStart = Button(self,text="Codieren/Decodieren")
self.bStart.bind("<Button-1>", self.starten)
self.bStart.place(x=220, y = 235)
self.label = Label(self, text = "Verschlüsselter Text")
self.label.config(bg = "lightgray")
self.label.place(x=550, y=10)
self.ausgabe = Text(self)
self.ausgabe.config(width=30, height=15)
self.ausgabe.place(x=550, y=30)
def starten(self, event):
self.playfair = Playfair(self.eingabe1.get('1.0',END),self.eingabe2.get('1.0',END))
self.playfair.textformatieren()
self.playfair.alphabetisieren()
self.playfair.codieren()
textneu = self.playfair.globall
self.label.config(text = textneu)
self.ausgabe.insert('0.0',textneu)
def main():
root = Tk()
root.config(width = 900, height = 330)
gui = Playfair_GUI(root)
root.mainloop()
main()
danke im voraus für hilfe!
mfg Paul[/code]