diff --git a/app/app.py b/app/app.py index 2cacccd..e2ca2fa 100644 --- a/app/app.py +++ b/app/app.py @@ -194,6 +194,9 @@ def auswahl_verarbeiten(): elif auswahl == "Wolseley-Chiffre": st.session_state.output_text = tools.wolseley(text, additional_parameter) st.session_state.map_data = None + elif auswahl == "Mono.-Substitution": + st.session_state.output_text = tools.monoalphasubstitution(text, additional_parameter) + st.session_state.map_data = None elif auswahl == "REPLACE": st.session_state.output_text = tools.REPLACE(text) st.session_state.map_data = None @@ -282,6 +285,11 @@ option = st.sidebar.radio("hidden_label", "T9-EN dekodieren", "Vigenere-Chiffre", "Wolseley-Chiffre", + "Mono.-Substitution", + "", + "", + "", + "", "", "Dummy mit Karte", ), @@ -302,6 +310,11 @@ elif option in ["Vigenere-Chiffre", "Wolseley-Chiffre"]: "Schlüsselwort:", placeholder="Schlüsselwort hier eingeben" ) +elif option in ["Mono.-Substitution"]: + additional_parameter = st.text_input( + "Schlüsselwort/Schlüsselalphabet:", + placeholder="Schlüsselwort/Schlüsselalphabet hier eingeben" + ) # Button zum manuellen Ausführen der Verarbeitungsfunktion if st.button(f"{st.session_state.option}"): auswahl_verarbeiten() diff --git a/app/tools.py b/app/tools.py index 7ca6636..6786b30 100644 --- a/app/tools.py +++ b/app/tools.py @@ -1896,7 +1896,7 @@ def vigenere(eingabetext, pw): return ausgabetext def wolseley(eingabetext, pw): - hilfetext = ("HILFE: ### Wolseley-Chiffre\n" + hilfetext = ("### Wolseley-Chiffre\n" "Die Eingabe eines Schlüsselwortes ist hier erforderlich!!! Die Woseley-Chiffre arbeitet mit einem " "Schlüsselwort über welches dann ein Codealphabet/Codequadrat gebildet wird mit welchem dann sowohl " "kodiert als auch dekodiert wird. Angefangen wird dabei mit dem jeweils ersten Vorkommen eines " @@ -1951,21 +1951,21 @@ def wolseley(eingabetext, pw): else: atxt += b return atxt -''' -def atbash(): - hilfetext = """HILFE: [Atbash-Chiffre] -Atbash ist eine einfache Ersetzungschiffre die für -das hebräische Alphabet entwickelt wurde, welche -später auf das lateinische Alphabet übertragen wurde. -Dabei wird dem normalen Alphabet ein rückwärtsgelesenes -Alphabet gegenüber gestellt. A wird zu Z, B zu Y usw. -Kodierung und Dekodierung erfolgt über die selbe Funktion. -""" - - eingabetext = Eingabe.get(1.0, END) + +def atbash(eingabetext): + hilfetext = ("### Atbash-Chiffre\n" + "Atbash ist eine einfache Ersetzungschiffre die für das hebräische Alphabet entwickelt wurde, welche " + "später auf das lateinische Alphabet übertragen wurde. Dabei wird dem normalen Alphabet ein " + "rückwärts gelesenes Alphabet gegenüber gestellt. A wird zu Z, B zu Y usw. Kodierung und Dekodierung " + "erfolgt über die selbe Funktion. \n \n" + "Codealpahbet: \n" + "| | | | | | | | | | | | | | | | | | | | | | | | | | |\n" + "|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|\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|\n" + "|Z|Y|X|W|V|U|T|S|R|Q|P|O|N|M|L|K|J|I|H|G|F|E|D|C|B|A|") text = eingabetext.rstrip() if text == "": - Ausgabe.insert(1.0, hilfetext + "\n") + return hilfetext else: abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" uabc = abc[::-1] @@ -1981,36 +1981,33 @@ Kodierung und Dekodierung erfolgt über die selbe Funktion. atxt += cabc[b.upper()].lower() else: atxt += b - Ausgabe.insert(1.0, atxt + "\n") + return atxt - -def monoalphasubstitution(): - hilfetext = """HILFE: [Monoalphabetische Substitutions-Chiffre] -Bei der monoalphabetischen Substitution wird jedem Buchstaben des -Alphabet dem Buchstaben eines Schlüsselalphabets zugeordnet: -Bsp. Klartextalphabet: ABCDEFGHIJKLMNOPQRSTUVWXYZ - Schlüsselalphabet: DSBJFALKNVPOQXYWCEGHIMRTUZ -Spezialformen dieser Chiffre sind Atbash, Cesar, Rot13 -Die Funktion hier arbeitet so, daß entweder ein komplettes -Schlüsselalphabet oder ein Schlüsselwort verwendet werden kann. -Wird ein Schlüsselwort genutzt wird der Rest des Schlüsselalphabet -automatisch aufgefüllt. -Aus dem Schlüsselwort GutenMorgenLiebeSonne wird dabei dann das -Schlüsselalphabet: GUTENMORLIBSACDFHJKPQVWXYZ -""" - - eingabetext = Eingabe.get(1.0, END) +def monoalphasubstitution(eingabetext, pw): + hilfetext = ("### Monoalphabetische Substitutions-Chiffre\n" + "Bei der monoalphabetischen Substitution wird jedem Buchstaben des Alphabets der Buchstabe eines " + "Schlüsselalphabets zugeordnet: \n" + "|Bsp.| |\n" + "|----|-|\n" + "|Klartextalphabet|ABCDEFGHIJKLMNOPQRSTUVWXYZ|\n" + "|Schlüsselalphabet|DSBJFALKNVPOQXYWCEGHIMRTUZ|\n \n" + "Spezialformen dieser Chiffre sind Atbash, Cesar, Rot13. Die Funktion hier arbeitet so, daß entweder " + "ein komplettes Schlüsselalphabet oder ein Schlüsselwort verwendet werden kann. Bei Verwendung eines " + "Schlüsselwortes, wird der Rest des Schlüsselalphabets automatisch aufgefüllt. \n" + "Aus dem Schlüsselwort GutenMorgenLiebeSonne wird z. B. dann das Schlüsselalphabet: " + "GUTENMORLIBSACDFHJKPQVWXYZ \n" + "| | |\n|-|-|\n|Schlüsselwort|GutenMorgenLiebeSonne|\n|Schlüsselalphabet|GUTENMORLIBSACDFHJKPQVWXYZ|") + if pw is None: + return hilfetext text = eingabetext.rstrip() - pw = PW_Eingabe.get() pw = pw.strip() if text == "" or pw == "": - Ausgabe.insert(1.0, hilfetext + "\n") + return hilfetext else: abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" for b in pw: if b.upper() not in abc: - Ausgabe.insert(1.0, "Das Passwort darf nur die Buchstaben A-Z / a-z enthalten!\n", "re") - return + return "Das Schlüsselwort/Schlüsselalphabet darf nur die Buchstaben A-Z / a-z enthalten!" cabc = "" for b in pw.upper() + abc: if b not in cabc: @@ -2037,14 +2034,12 @@ Schlüsselalphabet: GUTENMORLIBSACDFHJKPQVWXYZ decoded_txt += ucab[b.upper()].lower() else: decoded_txt += b + ausgabetext = f"_Dekodiert:_ \n{decoded_txt} \n \n" + ausgabetext += f"_Kodiert:_ \n{encoded_txt} \n \n" if len(pw) < len(abc): - Ausgabe.insert(1.0, "Schlüsselalphabet wurde wie folgt aufgefüllt: " + cabc + "\n", "gr") - Ausgabe.insert(1.0, encoded_txt + "\n") - Ausgabe.insert(1.0, "Kodiert:\n", "bu") - Ausgabe.insert(1.0, decoded_txt + "\n") - Ausgabe.insert(1.0, "Dekodiert:\n", "bu") - - + ausgabetext += f"Schlüsselalphabet wurde wie folgt aufgefüllt: {cabc}" + return ausgabetext +''' def autokey(): hilfetext = """HILFE: [Autokey-Chiffre] Die Autokey-Chiffre arbeitet nach dem selben