polybios
This commit is contained in:
11
app/app.py
11
app/app.py
@@ -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"
|
||||
|
||||
161
app/tools.py
161
app/tools.py
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user