mono-substitution

This commit is contained in:
2025-07-25 12:27:46 +02:00
parent 49ce093529
commit 3a6530bd54
2 changed files with 51 additions and 43 deletions

View File

@@ -194,6 +194,9 @@ def auswahl_verarbeiten():
elif auswahl == "Wolseley-Chiffre": elif auswahl == "Wolseley-Chiffre":
st.session_state.output_text = tools.wolseley(text, additional_parameter) st.session_state.output_text = tools.wolseley(text, additional_parameter)
st.session_state.map_data = None 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": elif auswahl == "REPLACE":
st.session_state.output_text = tools.REPLACE(text) st.session_state.output_text = tools.REPLACE(text)
st.session_state.map_data = None st.session_state.map_data = None
@@ -282,6 +285,11 @@ option = st.sidebar.radio("hidden_label",
"T9-EN dekodieren", "T9-EN dekodieren",
"Vigenere-Chiffre", "Vigenere-Chiffre",
"Wolseley-Chiffre", "Wolseley-Chiffre",
"Mono.-Substitution",
"",
"",
"",
"",
"", "",
"Dummy mit Karte", "Dummy mit Karte",
), ),
@@ -302,6 +310,11 @@ elif option in ["Vigenere-Chiffre", "Wolseley-Chiffre"]:
"Schlüsselwort:", "Schlüsselwort:",
placeholder="Schlüsselwort hier eingeben" 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 # Button zum manuellen Ausführen der Verarbeitungsfunktion
if st.button(f"{st.session_state.option}"): if st.button(f"{st.session_state.option}"):
auswahl_verarbeiten() auswahl_verarbeiten()

View File

@@ -1896,7 +1896,7 @@ def vigenere(eingabetext, pw):
return ausgabetext return ausgabetext
def wolseley(eingabetext, pw): 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 " "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 " "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 " "kodiert als auch dekodiert wird. Angefangen wird dabei mit dem jeweils ersten Vorkommen eines "
@@ -1951,21 +1951,21 @@ def wolseley(eingabetext, pw):
else: else:
atxt += b atxt += b
return atxt return atxt
'''
def atbash(): def atbash(eingabetext):
hilfetext = """HILFE: [Atbash-Chiffre] hilfetext = ("### Atbash-Chiffre\n"
Atbash ist eine einfache Ersetzungschiffre die für "Atbash ist eine einfache Ersetzungschiffre die für das hebräische Alphabet entwickelt wurde, welche "
das hebräische Alphabet entwickelt wurde, welche "später auf das lateinische Alphabet übertragen wurde. Dabei wird dem normalen Alphabet ein "
später auf das lateinische Alphabet übertragen wurde. "rückwärts gelesenes Alphabet gegenüber gestellt. A wird zu Z, B zu Y usw. Kodierung und Dekodierung "
Dabei wird dem normalen Alphabet ein rückwärtsgelesenes "erfolgt über die selbe Funktion. \n \n"
Alphabet gegenüber gestellt. A wird zu Z, B zu Y usw. "Codealpahbet: \n"
Kodierung und Dekodierung erfolgt über die selbe Funktion. "| | | | | | | | | | | | | | | | | | | | | | | | | | |\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"
eingabetext = Eingabe.get(1.0, END) "|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() text = eingabetext.rstrip()
if text == "": if text == "":
Ausgabe.insert(1.0, hilfetext + "\n") return hilfetext
else: else:
abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
uabc = abc[::-1] uabc = abc[::-1]
@@ -1981,36 +1981,33 @@ Kodierung und Dekodierung erfolgt über die selbe Funktion.
atxt += cabc[b.upper()].lower() atxt += cabc[b.upper()].lower()
else: else:
atxt += b atxt += b
Ausgabe.insert(1.0, atxt + "\n") return atxt
def monoalphasubstitution(eingabetext, pw):
def monoalphasubstitution(): hilfetext = ("### Monoalphabetische Substitutions-Chiffre\n"
hilfetext = """HILFE: [Monoalphabetische Substitutions-Chiffre] "Bei der monoalphabetischen Substitution wird jedem Buchstaben des Alphabets der Buchstabe eines "
Bei der monoalphabetischen Substitution wird jedem Buchstaben des "Schlüsselalphabets zugeordnet: \n"
Alphabet dem Buchstaben eines Schlüsselalphabets zugeordnet: "|Bsp.| |\n"
Bsp. Klartextalphabet: ABCDEFGHIJKLMNOPQRSTUVWXYZ "|----|-|\n"
Schlüsselalphabet: DSBJFALKNVPOQXYWCEGHIMRTUZ "|Klartextalphabet|ABCDEFGHIJKLMNOPQRSTUVWXYZ|\n"
Spezialformen dieser Chiffre sind Atbash, Cesar, Rot13 "|Schlüsselalphabet|DSBJFALKNVPOQXYWCEGHIMRTUZ|\n \n"
Die Funktion hier arbeitet so, daß entweder ein komplettes "Spezialformen dieser Chiffre sind Atbash, Cesar, Rot13. Die Funktion hier arbeitet so, daß entweder "
Schlüsselalphabet oder ein Schlüsselwort verwendet werden kann. "ein komplettes Schlüsselalphabet oder ein Schlüsselwort verwendet werden kann. Bei Verwendung eines "
Wird ein Schlüsselwort genutzt wird der Rest des Schlüsselalphabet "Schlüsselwortes, wird der Rest des Schlüsselalphabets automatisch aufgefüllt. \n"
automatisch aufgefüllt. "Aus dem Schlüsselwort GutenMorgenLiebeSonne wird z. B. dann das Schlüsselalphabet: "
Aus dem Schlüsselwort GutenMorgenLiebeSonne wird dabei dann das "GUTENMORLIBSACDFHJKPQVWXYZ \n"
Schlüsselalphabet: GUTENMORLIBSACDFHJKPQVWXYZ "| | |\n|-|-|\n|Schlüsselwort|GutenMorgenLiebeSonne|\n|Schlüsselalphabet|GUTENMORLIBSACDFHJKPQVWXYZ|")
""" if pw is None:
return hilfetext
eingabetext = Eingabe.get(1.0, END)
text = eingabetext.rstrip() text = eingabetext.rstrip()
pw = PW_Eingabe.get()
pw = pw.strip() pw = pw.strip()
if text == "" or pw == "": if text == "" or pw == "":
Ausgabe.insert(1.0, hilfetext + "\n") return hilfetext
else: else:
abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for b in pw: for b in pw:
if b.upper() not in abc: if b.upper() not in abc:
Ausgabe.insert(1.0, "Das Passwort darf nur die Buchstaben A-Z / a-z enthalten!\n", "re") return "Das Schlüsselwort/Schlüsselalphabet darf nur die Buchstaben A-Z / a-z enthalten!"
return
cabc = "" cabc = ""
for b in pw.upper() + abc: for b in pw.upper() + abc:
if b not in cabc: if b not in cabc:
@@ -2037,14 +2034,12 @@ Schlüsselalphabet: GUTENMORLIBSACDFHJKPQVWXYZ
decoded_txt += ucab[b.upper()].lower() decoded_txt += ucab[b.upper()].lower()
else: else:
decoded_txt += b decoded_txt += b
ausgabetext = f"_Dekodiert:_ \n{decoded_txt} \n \n"
ausgabetext += f"_Kodiert:_ \n{encoded_txt} \n \n"
if len(pw) < len(abc): if len(pw) < len(abc):
Ausgabe.insert(1.0, "Schlüsselalphabet wurde wie folgt aufgefüllt: " + cabc + "\n", "gr") ausgabetext += f"Schlüsselalphabet wurde wie folgt aufgefüllt: {cabc}"
Ausgabe.insert(1.0, encoded_txt + "\n") return ausgabetext
Ausgabe.insert(1.0, "Kodiert:\n", "bu") '''
Ausgabe.insert(1.0, decoded_txt + "\n")
Ausgabe.insert(1.0, "Dekodiert:\n", "bu")
def autokey(): def autokey():
hilfetext = """HILFE: [Autokey-Chiffre] hilfetext = """HILFE: [Autokey-Chiffre]
Die Autokey-Chiffre arbeitet nach dem selben Die Autokey-Chiffre arbeitet nach dem selben