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":
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()

View File

@@ -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