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":
|
elif auswahl == "Autokey-Chiffre":
|
||||||
st.session_state.output_text = tools.autokey(text, additional_parameter)
|
st.session_state.output_text = tools.autokey(text, additional_parameter)
|
||||||
st.session_state.map_data = None
|
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":
|
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
|
||||||
@@ -291,7 +297,8 @@ option = st.sidebar.radio("hidden_label",
|
|||||||
"Wolseley-Chiffre",
|
"Wolseley-Chiffre",
|
||||||
"Mono.-Substitution",
|
"Mono.-Substitution",
|
||||||
"Autokey-Chiffre",
|
"Autokey-Chiffre",
|
||||||
"",
|
"Polybios kodieren",
|
||||||
|
"Polybios dekodieren",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
@@ -309,7 +316,7 @@ if option == "Dummy mit Karte":
|
|||||||
"Optionaler Zusatztext für Dummy mit Karte",
|
"Optionaler Zusatztext für Dummy mit Karte",
|
||||||
placeholder="Zusätzliche Eingabe hier"
|
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(
|
additional_parameter = st.text_input(
|
||||||
"Schlüsselwort:",
|
"Schlüsselwort:",
|
||||||
placeholder="Schlüsselwort hier eingeben"
|
placeholder="Schlüsselwort hier eingeben"
|
||||||
|
|||||||
159
app/tools.py
159
app/tools.py
@@ -2108,41 +2108,33 @@ def autokey(eingabetext, pw):
|
|||||||
ausgabetext = f"_Dekodiert:_ \n{decoded_text} \n \n"
|
ausgabetext = f"_Dekodiert:_ \n{decoded_text} \n \n"
|
||||||
ausgabetext += f"_Kodiert:_ \n{encoded_text}"
|
ausgabetext += f"_Kodiert:_ \n{encoded_text}"
|
||||||
return ausgabetext
|
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()
|
text = eingabetext.rstrip()
|
||||||
pw = PW_Eingabe.get()
|
|
||||||
pw = pw.strip()
|
pw = pw.strip()
|
||||||
if text == "":
|
if text == "":
|
||||||
Ausgabe.insert(1.0, hilfetext + "\n")
|
return hilfetext
|
||||||
else:
|
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]
|
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
|
alpha5ij = "ABCDEFGHIKLMNOPQRSTUVWXYZ" # j wird durch i ersetzt
|
||||||
@@ -2210,53 +2202,48 @@ ausgegeben wird.
|
|||||||
ctext6 = ""
|
ctext6 = ""
|
||||||
for b in text6:
|
for b in text6:
|
||||||
ctext6 += wb6[b]
|
ctext6 += wb6[b]
|
||||||
Ausgabe.insert(1.0, ctext6 + "\n")
|
ausgabetext = "|Polybios 5x5 (j=i)| |\n"
|
||||||
Ausgabe.insert(1.0, "Passwort: " + passw6 + "\n", "gr")
|
ausgabetext += "|-|-|\n"
|
||||||
Ausgabe.insert(1.0, "Klartext: " + text6 + "\n", "gr")
|
ausgabetext += f"|Klartext|{text5ij}|\n"
|
||||||
Ausgabe.insert(1.0, "Polybios 6x6\n", "bu")
|
ausgabetext += f"|Schlüsselwort|{passw5ij}|\n"
|
||||||
Ausgabe.insert(1.0, ctext5uv + "\n\n")
|
ausgabetext += f"|kodiert|{ctext5ij}\n \n"
|
||||||
Ausgabe.insert(1.0, "Passwort: " + passw5uv + "\n", "gr")
|
ausgabetext += "|Polybios 5x5 (v=u)| |\n"
|
||||||
Ausgabe.insert(1.0, "Klartext: " + text5uv + "\n", "gr")
|
ausgabetext += "|-|-|\n"
|
||||||
Ausgabe.insert(1.0, "Polybios 5x5 (v=u)\n", "bu")
|
ausgabetext += f"|Klartext|{text5uv}|\n"
|
||||||
Ausgabe.insert(1.0, ctext5ij + "\n\n")
|
ausgabetext += f"|Schlüsselwort|{passw5uv}|\n"
|
||||||
Ausgabe.insert(1.0, "Passwort: " + passw5ij + "\n", "gr")
|
ausgabetext += f"|kodiert|{ctext5uv}|\n \n"
|
||||||
Ausgabe.insert(1.0, "Klartext: " + text5ij + "\n", "gr")
|
ausgabetext += "|Polybios 6x6| |\n"
|
||||||
Ausgabe.insert(1.0, "Polybios 5x5 (j=i)\n", "bu")
|
ausgabetext += "|-|-|\n"
|
||||||
|
ausgabetext += f"|Klartext|{text6}|\n"
|
||||||
|
ausgabetext += f"|Schlüsselwort|{passw6}|\n"
|
||||||
|
ausgabetext += f"|kodiert|{ctext6}|\n"
|
||||||
|
return ausgabetext
|
||||||
|
|
||||||
|
def polybios_decode(eingabetext, pw):
|
||||||
def polybios_decode():
|
hilfetext = ('### Polybios-Chiffre dekodieren\n'
|
||||||
hilfetext = """HILFE: [Polybios-Chiffre dekodieren]
|
'Die 5x5 Polybios-Chiffre kodiert Buchstaben zu zweistelligen Zahlen dazu wird das Schlüsselalphabet '
|
||||||
Die 5x5 Polybios-Chiffre kodiert Buchstaben zu zweistelligen
|
'in ein 5x5-Quadrat eingetragen. Die Buchstaben werden dann sozusagen zu ihren entsprechenden '
|
||||||
Zahlen dazu wird das Schlüsselalphabet in ein 5x5-Quadrat
|
'"Koordinaten" kodiert. Im unten gezeigten Quadrat wird so aus A 11, aus B 12, aus Q 41, usw. Da in '
|
||||||
eingetragen. Die Buchstaben werden dann sozusagen zu ihren
|
'ein 5x5 Quadrat nur 25 Buchstaben passen wird typischer Weise J und I zusammengefasst, (alternativ '
|
||||||
entsprechenden "Koordinaten" kodiert. Im unten gezeigten
|
'auch U und V), sollen auch Ziffern kodiert werden wird mit einem 6x6-Quadrat gearbeitet, bei '
|
||||||
Quadrat wird so aus A 11, aus B 12, aus Q 41, usw.
|
'welchem dann für das komplette Alphabet und die Ziffern 0-9 Platz ist. \n'
|
||||||
Da in ein 5x5 Quadrat nur 25 Buchstaben passen wird
|
'| |1|2|3|4|5|\n'
|
||||||
typischer Weise J und I zusammengefasst,
|
'|-|-|-|-|-|-|\n'
|
||||||
(alternativ auch U und V), sollen auch Ziffern kodiert
|
'|1|A|B|C|D|E|\n'
|
||||||
werden wird mit einem 6x6-Quadrat gearbeitet, bei welchem
|
'|2|F|G|H|I|K|\n'
|
||||||
dann für das komplette Alphabet und die Ziffern 0-9 Platz ist.
|
'|3|L|M|N|O|P|\n'
|
||||||
1 2 3 4 5
|
'|4|Q|R|S|T|U|\n'
|
||||||
1 A B C D E
|
'|5|V|W|X|Y|Z|\n\n'
|
||||||
2 F G H I K
|
'Kommt für die Chiffre ein Schlüsselwort zum Einsatz wird das Code-Quadrat so abgeändert das die '
|
||||||
3 L M N O P
|
'Buchstaben des Schlüsselwortes entsprechend ihres ersten Vorkommens Zeile für Zeile in das '
|
||||||
4 Q R S T U
|
'Codequadrat eingetragen werden, der Rest wird mit den verbliebenen Buchstaben aufgefüllt. Zur '
|
||||||
5 V W X Y Z
|
'Information wird für jede Polybios-Variante auch noch einmal das verwendete Passwort ausgegeben.')
|
||||||
Kommt für die Chiffre ein Passwort zum Einsatz wird das
|
if pw is None:
|
||||||
Code-Quadrat so abgeändert wie es in der Hilfe zur
|
return hilfetext
|
||||||
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)
|
|
||||||
text = eingabetext.rstrip()
|
text = eingabetext.rstrip()
|
||||||
pw = PW_Eingabe.get()
|
|
||||||
pw = pw.strip()
|
pw = pw.strip()
|
||||||
if text == "":
|
if text == "":
|
||||||
Ausgabe.insert(1.0, hilfetext + "\n")
|
return hilfetext
|
||||||
else:
|
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]
|
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
|
alpha5ij = "ABCDEFGHIKLMNOPQRSTUVWXYZ" # j wird durch i ersetzt
|
||||||
@@ -2316,17 +2303,21 @@ einmal das verwendete Passwort ausgegeben wird.
|
|||||||
ctext5ij += " "
|
ctext5ij += " "
|
||||||
ctext5uv += " "
|
ctext5uv += " "
|
||||||
ctext6 += " "
|
ctext6 += " "
|
||||||
Ausgabe.insert(1.0, ctext6 + "\n")
|
ausgabetext = "|Polybios 5x5 (j=i)| |\n"
|
||||||
Ausgabe.insert(1.0, "Passwort: " + passw6 + "\n", "gr")
|
ausgabetext += "|-|-|\n"
|
||||||
Ausgabe.insert(1.0, "Polybios 6x6\n", "bu")
|
ausgabetext += f"|Schlüsselwort|{passw5ij}|\n"
|
||||||
Ausgabe.insert(1.0, ctext5uv + "\n\n")
|
ausgabetext += f"|dekodiert|{ctext5ij}|\n \n"
|
||||||
Ausgabe.insert(1.0, "Passwort: " + passw5uv + "\n", "gr")
|
ausgabetext += "|Polybios 5x5 (v=u)| |\n"
|
||||||
Ausgabe.insert(1.0, "Polybios 5x5 (v=u)\n", "bu")
|
ausgabetext += "|-|-|\n"
|
||||||
Ausgabe.insert(1.0, ctext5ij + "\n\n")
|
ausgabetext += f"|Schlüsselwort|{passw5uv}|\n"
|
||||||
Ausgabe.insert(1.0, "Passwort: " + passw5ij + "\n", "gr")
|
ausgabetext += f"|dekodiert|{ctext5uv}|\n \n"
|
||||||
Ausgabe.insert(1.0, "Polybios 5x5 (j=i)\n", "bu")
|
ausgabetext += "|Polybios 6x6| |\n"
|
||||||
|
ausgabetext += "|-|-|\n"
|
||||||
|
ausgabetext += f"|Schlüsselwort|{passw6}|\n"
|
||||||
|
ausgabetext += f"|dekodiert|{ctext6}|\n"
|
||||||
|
return ausgabetext
|
||||||
|
|
||||||
|
'''
|
||||||
def klopfcode_encode():
|
def klopfcode_encode():
|
||||||
hilfetext = """HILFE: [Klopfcode kodieren]
|
hilfetext = """HILFE: [Klopfcode kodieren]
|
||||||
Der Klopfcode ist im Prinzip eine Polybios Chiffre
|
Der Klopfcode ist im Prinzip eine Polybios Chiffre
|
||||||
|
|||||||
Reference in New Issue
Block a user