From 49ce0935291fde42aae01d5c7413d67e36ee9b2c Mon Sep 17 00:00:00 2001 From: tebarius Date: Fri, 25 Jul 2025 11:54:03 +0200 Subject: [PATCH] wolseley --- app/app.py | 7 ++++-- app/tools.py | 61 +++++++++++++++++++++------------------------------- 2 files changed, 29 insertions(+), 39 deletions(-) diff --git a/app/app.py b/app/app.py index c75f308..2cacccd 100644 --- a/app/app.py +++ b/app/app.py @@ -191,6 +191,9 @@ def auswahl_verarbeiten(): elif auswahl == "Vigenere-Chiffre": st.session_state.output_text = tools.vigenere(text, additional_parameter) st.session_state.map_data = None + elif auswahl == "Wolseley-Chiffre": + st.session_state.output_text = tools.wolseley(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 @@ -278,7 +281,7 @@ option = st.sidebar.radio("hidden_label", "T9-DE dekodieren", "T9-EN dekodieren", "Vigenere-Chiffre", - "", + "Wolseley-Chiffre", "", "Dummy mit Karte", ), @@ -294,7 +297,7 @@ if option == "Dummy mit Karte": "Optionaler Zusatztext für Dummy mit Karte", placeholder="Zusätzliche Eingabe hier" ) -elif option == "Vigenere-Chiffre": +elif option in ["Vigenere-Chiffre", "Wolseley-Chiffre"]: additional_parameter = st.text_input( "Schlüsselwort:", placeholder="Schlüsselwort hier eingeben" diff --git a/app/tools.py b/app/tools.py index 2ce1cf6..7ca6636 100644 --- a/app/tools.py +++ b/app/tools.py @@ -1894,47 +1894,35 @@ def vigenere(eingabetext, pw): ausgabetext += f"_Dekodiert - Sonderzeichen verbrauchen Schlüsselbuchstaben:_ \n{decoded_text_s} \n \n" ausgabetext += f"_Kodiert - Sonderzeichen verbrauchen Schlüsselbuchstaben:_ \n{encoded_text_s}" return ausgabetext -''' -def wolseley(): - hilfetext = """HILFE: [Wolseley-Chiffre] -Die Eingabe eines Schlüsselwortes ist hier erforderlich!!! -Die Woseley-Chiffre arbeitet mit einem Schlüsselwort über -welches dann ein Codequadrat/Codealphabet gebildet wird -mit welchem dann sowohl kodiert als auch dekodiert wird. -Angefangen wird dabei mit dem jeweils ersten Vorkommen -eines Buchstaben im Schlüsselwort und danach folgen die -restlichen Buchstaben des Alphabets die nicht im -Schlüsselwort vorkommen. Da hier nur 25 Zeichen zur -Verfügung stehen wird das J mit dem I zusammengefasst -und als I behandelt und dargestellt. Sonstige Zeichen -die nicht im Codealphabet vorhanden sind werden unverändert -ausgegeben. -Codequadrat mit Schlüsselwort: Teebaum - 1 2 3 4 5 -1 T E B A U -2 M C D F G -3 H I K L N -4 O P Q R S -5 V W X Y Z -Bei der Chiffrierung/Dechiffrierung wird im Text nun der -erste Buchstabe mit dem letzten getauscht, der 2. mit dem -Vorletzten, usw. -also aus T wird Z und umgekehrt,E<->Y, B<->X, A<->W usw.. -nur ein K bleibt ein K -""" + +def wolseley(eingabetext, pw): + hilfetext = ("HILFE: ### 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 " + "Buchstaben im Schlüsselwort und danach folgen die restlichen Buchstaben des Alphabets die nicht im " + "Schlüsselwort vorkommen. Da hier nur 25 Zeichen zur Verfügung stehen wird das J mit dem I " + "zusammengefasst und als I behandelt und dargestellt. Sonstige Zeichen die nicht im Codealphabet " + "vorhanden sind werden unverändert ausgegeben. \n \n" + "Codealpahbet mit Schlüsselwort: Teebaum \n" + "| | | | | | | | | | | | | | | | | | | | | | | | | |\n" + "|-|-|-|-|-|-|-|-|-|-|-|---|-|---|-|-|-|-|-|-|-|-|-|-|-|\n" + "|T|E|B|A|U|M|C|D|F|G|H|I/J|K|L |N|O|P|Q|R|S|V|W|X|Y|Z|\n" + "|Z|Y|X|W|V|S|R|Q|P|O|N|L |K|I/J|H|G|F|D|C|M|U|A|B|E|T|\n \n" + "Bei der Chiffrierung/Dechiffrierung wird im Text nun der erste Buchstabe mit dem letzten getauscht, " + "der 2. mit dem Vorletzten, usw. also aus T wird Z und umgekehrt,E<->Y, B<->X, A<->W usw.. nur ein " + "K bleibt ein K") abc = "ABCDEFGHIKLMNOPQRSTUVWXYZ" # j wird als i chiffriert - - eingabetext = Eingabe.get(1.0, END) + 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: for b in pw: if b.upper() not in "ABCDEFGHIJKLMNOPQRSTUVWXYZ": - Ausgabe.insert(1.0, "Das Passwort darf nur die Buchstaben A-Z / a-z enthalten!\n", "re") - return + return "Das Passwort darf nur die Buchstaben A-Z / a-z enthalten!" text = text.upper() pw = pw.upper() if "J" in text: @@ -1962,9 +1950,8 @@ nur ein K bleibt ein K atxt += cabc[b] else: atxt += b - Ausgabe.insert(1.0, atxt + "\n") - - + return atxt +''' def atbash(): hilfetext = """HILFE: [Atbash-Chiffre] Atbash ist eine einfache Ersetzungschiffre die für