This commit is contained in:
2025-07-25 18:51:56 +02:00
parent a8e36d0a4c
commit 35272fc8a0
2 changed files with 85 additions and 87 deletions

View File

@@ -201,6 +201,12 @@ def auswahl_verarbeiten():
elif auswahl == "Autokey-Chiffre":
st.session_state.output_text = tools.autokey(text, additional_parameter)
st.session_state.map_data = None
elif auswahl == "Polybios kodieren":
st.session_state.output_text = tools.polybios_encode(text, additional_parameter)
st.session_state.map_data = None
elif auswahl == "Polybios dekodieren":
st.session_state.output_text = tools.polybios_decode(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
@@ -291,7 +297,8 @@ option = st.sidebar.radio("hidden_label",
"Wolseley-Chiffre",
"Mono.-Substitution",
"Autokey-Chiffre",
"",
"Polybios kodieren",
"Polybios dekodieren",
"",
"",
"",
@@ -309,7 +316,7 @@ if option == "Dummy mit Karte":
"Optionaler Zusatztext für Dummy mit Karte",
placeholder="Zusätzliche Eingabe hier"
)
elif option in ["Vigenere-Chiffre", "Wolseley-Chiffre", "Autokey-Chiffre"]:
elif option in ["Vigenere-Chiffre", "Wolseley-Chiffre", "Autokey-Chiffre", "Polybios kodieren", "Polybios dekodieren"]:
additional_parameter = st.text_input(
"Schlüsselwort:",
placeholder="Schlüsselwort hier eingeben"

View File

@@ -2108,41 +2108,33 @@ def autokey(eingabetext, pw):
ausgabetext = f"_Dekodiert:_ \n{decoded_text} \n \n"
ausgabetext += f"_Kodiert:_ \n{encoded_text}"
return ausgabetext
'''
def polybios_encode():
hilfetext = """HILFE: [Polybios-Chiffre kodieren]
Die 5x5 Polybios-Chiffre kodiert Buchstaben zu zweistelligen
Zahlen dazu wird das Schlüsselalphabet in ein 5x5-Quadrat
eingetragen. Die Buchstaben werden dann sozusagen zu ihren
entsprechenden "Koordinaten" kodiert. Im unten gezeigten
Quadrat wird so aus A 11, aus B 12, aus Q 41, usw.
Da in ein 5x5 Quadrat nur 25 Buchstaben passen wird
typischer Weise J und I zusammengefasst,
(alternativ auch U und V), sollen auch Ziffern kodiert
werden wird mit einem 6x6-Quadrat gearbeitet, bei welchem
dann für das komplette Alphabet und die Ziffern 0-9 Platz ist.
1 2 3 4 5
1 A B C D E
2 F G H I K
3 L M N O P
4 Q R S T U
5 V W X Y Z
Kommt für die Chiffre ein Passwort zum Einsatz wird das
Code-Quadrat so abgeändert wie es in der Hilfe zur
Woseley-Chiffre beschrieben ist.
Die Funktion ist so gestaltet, daß alle nicht im jeweiligen
Codealphabet vorhandenen Zeichen herausgefiltert werden.
Zur Information wird für jede Polybios-Variante auch noch
einmal der verwendete Klartext und das verwendete Passwort
ausgegeben wird.
"""
eingabetext = Eingabe.get(1.0, END)
def polybios_encode(eingabetext, pw):
hilfetext = ('### Polybios-Chiffre kodieren\n'
'Die 5x5 Polybios-Chiffre kodiert Buchstaben zu zweistelligen Zahlen dazu wird das Schlüsselalphabet '
'in ein 5x5-Quadrat eingetragen. Die Buchstaben werden dann sozusagen zu ihren entsprechenden '
'"Koordinaten" kodiert. Im unten gezeigten Quadrat wird so aus A 11, aus B 12, aus Q 41, usw. Da in '
'ein 5x5 Quadrat nur 25 Buchstaben passen wird typischer Weise J und I zusammengefasst, (alternativ '
'auch U und V), sollen auch Ziffern kodiert werden wird mit einem 6x6-Quadrat gearbeitet, bei '
'welchem dann für das komplette Alphabet und die Ziffern 0-9 Platz ist. \n'
'| |1|2|3|4|5|\n'
'|-|-|-|-|-|-|\n'
'|1|A|B|C|D|E|\n'
'|2|F|G|H|I|K|\n'
'|3|L|M|N|O|P|\n'
'|4|Q|R|S|T|U|\n'
'|5|V|W|X|Y|Z|\n\n'
'Kommt für die Chiffre ein Schlüsselwort zum Einsatz wird das Code-Quadrat so abgeändert das die '
'Buchstaben des Schlüsselwortes entsprechend ihres ersten Vorkommens Zeile für Zeile in das '
'Codequadrat eingetragen werden, der Rest wird mit den verbliebenen Buchstaben aufgefüllt. Zur '
'Information wird für jede Polybios-Variante auch noch einmal der verwendete Klartext und das '
'verwendete Passwort ausgegeben.')
if pw is None:
return hilfetext
text = eingabetext.rstrip()
pw = PW_Eingabe.get()
pw = pw.strip()
if text == "":
Ausgabe.insert(1.0, hilfetext + "\n")
return hilfetext
else:
qz5 = [11, 12, 13, 14, 15, 21, 22, 23, 24, 25, 31, 32, 33, 34, 35, 41, 42, 43, 44, 45, 51, 52, 53, 54, 55]
alpha5ij = "ABCDEFGHIKLMNOPQRSTUVWXYZ" # j wird durch i ersetzt
@@ -2210,53 +2202,48 @@ ausgegeben wird.
ctext6 = ""
for b in text6:
ctext6 += wb6[b]
Ausgabe.insert(1.0, ctext6 + "\n")
Ausgabe.insert(1.0, "Passwort: " + passw6 + "\n", "gr")
Ausgabe.insert(1.0, "Klartext: " + text6 + "\n", "gr")
Ausgabe.insert(1.0, "Polybios 6x6\n", "bu")
Ausgabe.insert(1.0, ctext5uv + "\n\n")
Ausgabe.insert(1.0, "Passwort: " + passw5uv + "\n", "gr")
Ausgabe.insert(1.0, "Klartext: " + text5uv + "\n", "gr")
Ausgabe.insert(1.0, "Polybios 5x5 (v=u)\n", "bu")
Ausgabe.insert(1.0, ctext5ij + "\n\n")
Ausgabe.insert(1.0, "Passwort: " + passw5ij + "\n", "gr")
Ausgabe.insert(1.0, "Klartext: " + text5ij + "\n", "gr")
Ausgabe.insert(1.0, "Polybios 5x5 (j=i)\n", "bu")
ausgabetext = "|Polybios 5x5 (j=i)| |\n"
ausgabetext += "|-|-|\n"
ausgabetext += f"|Klartext|{text5ij}|\n"
ausgabetext += f"|Schlüsselwort|{passw5ij}|\n"
ausgabetext += f"|kodiert|{ctext5ij}\n \n"
ausgabetext += "|Polybios 5x5 (v=u)| |\n"
ausgabetext += "|-|-|\n"
ausgabetext += f"|Klartext|{text5uv}|\n"
ausgabetext += f"|Schlüsselwort|{passw5uv}|\n"
ausgabetext += f"|kodiert|{ctext5uv}|\n \n"
ausgabetext += "|Polybios 6x6| |\n"
ausgabetext += "|-|-|\n"
ausgabetext += f"|Klartext|{text6}|\n"
ausgabetext += f"|Schlüsselwort|{passw6}|\n"
ausgabetext += f"|kodiert|{ctext6}|\n"
return ausgabetext
def polybios_decode():
hilfetext = """HILFE: [Polybios-Chiffre dekodieren]
Die 5x5 Polybios-Chiffre kodiert Buchstaben zu zweistelligen
Zahlen dazu wird das Schlüsselalphabet in ein 5x5-Quadrat
eingetragen. Die Buchstaben werden dann sozusagen zu ihren
entsprechenden "Koordinaten" kodiert. Im unten gezeigten
Quadrat wird so aus A 11, aus B 12, aus Q 41, usw.
Da in ein 5x5 Quadrat nur 25 Buchstaben passen wird
typischer Weise J und I zusammengefasst,
(alternativ auch U und V), sollen auch Ziffern kodiert
werden wird mit einem 6x6-Quadrat gearbeitet, bei welchem
dann für das komplette Alphabet und die Ziffern 0-9 Platz ist.
1 2 3 4 5
1 A B C D E
2 F G H I K
3 L M N O P
4 Q R S T U
5 V W X Y Z
Kommt für die Chiffre ein Passwort zum Einsatz wird das
Code-Quadrat so abgeändert wie es in der Hilfe zur
Woseley-Chiffre beschrieben ist.
Die Funktion ist so gestaltet, daß alle nicht im jeweiligen
Codealphabet vorhandenen Zeichen herausgefiltert werden.
Zur Information wird für jede Polybios-Variante auch noch
einmal das verwendete Passwort ausgegeben wird.
"""
eingabetext = Eingabe.get(1.0, END)
def polybios_decode(eingabetext, pw):
hilfetext = ('### Polybios-Chiffre dekodieren\n'
'Die 5x5 Polybios-Chiffre kodiert Buchstaben zu zweistelligen Zahlen dazu wird das Schlüsselalphabet '
'in ein 5x5-Quadrat eingetragen. Die Buchstaben werden dann sozusagen zu ihren entsprechenden '
'"Koordinaten" kodiert. Im unten gezeigten Quadrat wird so aus A 11, aus B 12, aus Q 41, usw. Da in '
'ein 5x5 Quadrat nur 25 Buchstaben passen wird typischer Weise J und I zusammengefasst, (alternativ '
'auch U und V), sollen auch Ziffern kodiert werden wird mit einem 6x6-Quadrat gearbeitet, bei '
'welchem dann für das komplette Alphabet und die Ziffern 0-9 Platz ist. \n'
'| |1|2|3|4|5|\n'
'|-|-|-|-|-|-|\n'
'|1|A|B|C|D|E|\n'
'|2|F|G|H|I|K|\n'
'|3|L|M|N|O|P|\n'
'|4|Q|R|S|T|U|\n'
'|5|V|W|X|Y|Z|\n\n'
'Kommt für die Chiffre ein Schlüsselwort zum Einsatz wird das Code-Quadrat so abgeändert das die '
'Buchstaben des Schlüsselwortes entsprechend ihres ersten Vorkommens Zeile für Zeile in das '
'Codequadrat eingetragen werden, der Rest wird mit den verbliebenen Buchstaben aufgefüllt. Zur '
'Information wird für jede Polybios-Variante auch noch einmal das verwendete Passwort ausgegeben.')
if pw is None:
return hilfetext
text = eingabetext.rstrip()
pw = PW_Eingabe.get()
pw = pw.strip()
if text == "":
Ausgabe.insert(1.0, hilfetext + "\n")
return hilfetext
else:
qz5 = [11, 12, 13, 14, 15, 21, 22, 23, 24, 25, 31, 32, 33, 34, 35, 41, 42, 43, 44, 45, 51, 52, 53, 54, 55]
alpha5ij = "ABCDEFGHIKLMNOPQRSTUVWXYZ" # j wird durch i ersetzt
@@ -2316,17 +2303,21 @@ einmal das verwendete Passwort ausgegeben wird.
ctext5ij += " "
ctext5uv += " "
ctext6 += " "
Ausgabe.insert(1.0, ctext6 + "\n")
Ausgabe.insert(1.0, "Passwort: " + passw6 + "\n", "gr")
Ausgabe.insert(1.0, "Polybios 6x6\n", "bu")
Ausgabe.insert(1.0, ctext5uv + "\n\n")
Ausgabe.insert(1.0, "Passwort: " + passw5uv + "\n", "gr")
Ausgabe.insert(1.0, "Polybios 5x5 (v=u)\n", "bu")
Ausgabe.insert(1.0, ctext5ij + "\n\n")
Ausgabe.insert(1.0, "Passwort: " + passw5ij + "\n", "gr")
Ausgabe.insert(1.0, "Polybios 5x5 (j=i)\n", "bu")
ausgabetext = "|Polybios 5x5 (j=i)| |\n"
ausgabetext += "|-|-|\n"
ausgabetext += f"|Schlüsselwort|{passw5ij}|\n"
ausgabetext += f"|dekodiert|{ctext5ij}|\n \n"
ausgabetext += "|Polybios 5x5 (v=u)| |\n"
ausgabetext += "|-|-|\n"
ausgabetext += f"|Schlüsselwort|{passw5uv}|\n"
ausgabetext += f"|dekodiert|{ctext5uv}|\n \n"
ausgabetext += "|Polybios 6x6| |\n"
ausgabetext += "|-|-|\n"
ausgabetext += f"|Schlüsselwort|{passw6}|\n"
ausgabetext += f"|dekodiert|{ctext6}|\n"
return ausgabetext
'''
def klopfcode_encode():
hilfetext = """HILFE: [Klopfcode kodieren]
Der Klopfcode ist im Prinzip eine Polybios Chiffre