Vigenere
This commit is contained in:
18
app/app.py
18
app/app.py
@@ -182,6 +182,15 @@ def auswahl_verarbeiten():
|
|||||||
elif auswahl == "T9-EN dekodieren":
|
elif auswahl == "T9-EN dekodieren":
|
||||||
st.session_state.output_text = tools.t9_en(text)
|
st.session_state.output_text = tools.t9_en(text)
|
||||||
st.session_state.map_data = None
|
st.session_state.map_data = None
|
||||||
|
elif auswahl == "Vigenere-Chiffre":
|
||||||
|
st.session_state.output_text = tools.vigenere(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
|
||||||
|
elif auswahl == "REPLACE":
|
||||||
|
st.session_state.output_text = tools.REPLACE(text)
|
||||||
|
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
|
||||||
@@ -260,6 +269,8 @@ option = st.sidebar.radio("hidden_label",
|
|||||||
"Re-Morse-EN",
|
"Re-Morse-EN",
|
||||||
"T9-DE dekodieren",
|
"T9-DE dekodieren",
|
||||||
"T9-EN dekodieren",
|
"T9-EN dekodieren",
|
||||||
|
"Vigenere-Chiffre",
|
||||||
|
"",
|
||||||
"",
|
"",
|
||||||
"Dummy mit Karte",
|
"Dummy mit Karte",
|
||||||
),
|
),
|
||||||
@@ -275,13 +286,16 @@ 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 == "Vigenere-Chiffre":
|
||||||
|
additional_parameter = st.text_input(
|
||||||
|
"Schlüsselwort:",
|
||||||
|
placeholder="Schlüsselwort 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()
|
||||||
|
|
||||||
# Ausgabefeld
|
# Ausgabefeld
|
||||||
st.markdown('__Ausgabe:__')
|
|
||||||
st.markdown(st.session_state.output_text)
|
st.markdown(st.session_state.output_text)
|
||||||
|
|
||||||
# Karte anzeigen, falls aktiviert
|
# Karte anzeigen, falls aktiviert
|
||||||
|
|||||||
61
app/tools.py
61
app/tools.py
@@ -1454,7 +1454,7 @@ def pi_suche(eingabetext):
|
|||||||
def anagramm_suche_de(eingabetext):
|
def anagramm_suche_de(eingabetext):
|
||||||
eingabetext = eingabetext.rstrip()
|
eingabetext = eingabetext.rstrip()
|
||||||
if eingabetext == "":
|
if eingabetext == "":
|
||||||
return ("### Anagrammsuche mit Wörterbuch\n"
|
return ("### Anagrammsuche mit Wörterbuch DE\n"
|
||||||
"Diese Funktion benutzt eine deutsche Wörterbuchdatei vom Project "
|
"Diese Funktion benutzt eine deutsche Wörterbuchdatei vom Project "
|
||||||
"https://sourceforge.net/projects/germandict um zu überprüfen ob sich unter Verwendung __aller__ "
|
"https://sourceforge.net/projects/germandict um zu überprüfen ob sich unter Verwendung __aller__ "
|
||||||
"eingegebenen Buchstaben Wörter bilden lassen, welche im Wörterbuch vorkommen.")
|
"eingegebenen Buchstaben Wörter bilden lassen, welche im Wörterbuch vorkommen.")
|
||||||
@@ -1508,7 +1508,7 @@ def anagramm_suche_en(eingabetext):
|
|||||||
def wortsuche_de(eingabetext):
|
def wortsuche_de(eingabetext):
|
||||||
eingabetext = eingabetext.rstrip()
|
eingabetext = eingabetext.rstrip()
|
||||||
if eingabetext == "":
|
if eingabetext == "":
|
||||||
return ("### Wortsuche mit Wörterbuch\n"
|
return ("### Wortsuche mit Wörterbuch DE\n"
|
||||||
"Wer kennt es nicht? Man sucht ein Wort mit einer bestimmten Anzahl an Buchstaben und weiß aber z.B. "
|
"Wer kennt es nicht? Man sucht ein Wort mit einer bestimmten Anzahl an Buchstaben und weiß aber z.B. "
|
||||||
"nur den Anfangsbuchstaben und die letzten 3 Buchstaben. Hierbei soll diese Funktion helfen. "
|
"nur den Anfangsbuchstaben und die letzten 3 Buchstaben. Hierbei soll diese Funktion helfen. "
|
||||||
"Unbekannte Buchstaben werden dabei einfach durch * ersetzt. Klein-/Großschreibung in der Eingabe "
|
"Unbekannte Buchstaben werden dabei einfach durch * ersetzt. Klein-/Großschreibung in der Eingabe "
|
||||||
@@ -1544,7 +1544,7 @@ def wortsuche_de(eingabetext):
|
|||||||
def wortsuche_en(eingabetext):
|
def wortsuche_en(eingabetext):
|
||||||
eingabetext = eingabetext.rstrip()
|
eingabetext = eingabetext.rstrip()
|
||||||
if eingabetext == "":
|
if eingabetext == "":
|
||||||
return ("### Wortsuche mit Wörterbuch\n"
|
return ("### Wortsuche mit Wörterbuch EN\n"
|
||||||
"Wer kennt es nicht? Man sucht ein Wort mit einer bestimmten Anzahl an Buchstaben und weiß aber z.B. "
|
"Wer kennt es nicht? Man sucht ein Wort mit einer bestimmten Anzahl an Buchstaben und weiß aber z.B. "
|
||||||
"nur den Anfangsbuchstaben und die letzten 3 Buchstaben. Hierbei soll diese Funktion helfen. "
|
"nur den Anfangsbuchstaben und die letzten 3 Buchstaben. Hierbei soll diese Funktion helfen. "
|
||||||
"Unbekannte Buchstaben werden dabei einfach durch * ersetzt. Klein-/Großschreibung in der Eingabe "
|
"Unbekannte Buchstaben werden dabei einfach durch * ersetzt. Klein-/Großschreibung in der Eingabe "
|
||||||
@@ -1717,7 +1717,7 @@ def t9_en(eingabetext):
|
|||||||
'-': '1', ',': '1', '+': '0', ')': '1', '(': '1', 'SS': '7'}
|
'-': '1', ',': '1', '+': '0', ')': '1', '(': '1', 'SS': '7'}
|
||||||
eingabetext = eingabetext.rstrip()
|
eingabetext = eingabetext.rstrip()
|
||||||
if eingabetext == "":
|
if eingabetext == "":
|
||||||
return ("### T9 EN\n"
|
return ("### T9-EN\n"
|
||||||
"Mit Hilfe der englischen Wörterliste en_US-large.txt vom Project "
|
"Mit Hilfe der englischen Wörterliste en_US-large.txt vom Project "
|
||||||
"https://sourceforge.net/projects/wordlist ermittelt diese Funktion alle im Wörterbuch "
|
"https://sourceforge.net/projects/wordlist ermittelt diese Funktion alle im Wörterbuch "
|
||||||
"enthaltenen Wörter die zu der eingegebenen T9-kodierten Ziffernfolge passen und gibt diese aus. \n"
|
"enthaltenen Wörter die zu der eingegebenen T9-kodierten Ziffernfolge passen und gibt diese aus. \n"
|
||||||
@@ -1742,38 +1742,30 @@ def t9_en(eingabetext):
|
|||||||
wbfile.close()
|
wbfile.close()
|
||||||
return ausgabetext
|
return ausgabetext
|
||||||
|
|
||||||
'''
|
def vigenere(eingabetext, pw):
|
||||||
def vigenere():
|
hilfetext = ("### Vigenere-Chiffre\n"
|
||||||
hilfetext = """HILFE: [Vigenere-Chiffre]
|
"Die Eingabe eines Schlüsselwortes ist hier erforderlich!!! Die Vigenere-Chiffre baut auf dem Prinzip "
|
||||||
Die Eingabe eines Schlüsselwortes ist hier erforderlich!!!
|
"der Cesar-Chiffre auf, wobei hier die Verschiebung jedes einzelnen Buchstaben durch die "
|
||||||
Die Vigenere-Chiffre baut auf dem Prinzip der Cesar-Chiffre
|
"Buchstabenwerte eines Schlüsselwortes definiert werden. Da der zu verschlüsselnde Text im "
|
||||||
auf, wobei hier die Verschiebung jedes einzelnen Buchstaben
|
"allgemeinen länger als das Schlüsselwort ist, wird das Schlüsselwort immer wieder wiederholt. "
|
||||||
durch die Buchstabenwerte eines Schlüsselwortes definiert
|
"Ist der Schlüssel mindestens genauso lang wie der Klartext entspricht dies dann dem "
|
||||||
werden. Da der zu verschlüsselnde Text im allgemeinen
|
"One-Time-Pad-Chiffre. Der eingegebene Text wird hier mit dem eingegebenen Schlüsselwort kodiert und "
|
||||||
länger als das Schlüsselwort ist, wird das Schlüsselwort immer
|
"dekodiert ausgegeben und zwar sowohl in der Variante, daß Sonderzeichen Schlüsselbuchstaben "
|
||||||
wieder wiederholt. Ist der Schlüssel mindestens genauso lang wie
|
"verbrauchen als auch nicht.")
|
||||||
der Klartext entspricht dies dann dem One-Time-Pad-Chiffre.
|
|
||||||
Der eingegebene Text wird hier mit dem eingegebenen Schlüsselwort
|
|
||||||
kodiert und dekodiert ausgegeben und zwar sowohl in der
|
|
||||||
Variante, daß Sonderzeichen Schlüsselbuchstaben verbrauchen
|
|
||||||
als auch nicht.
|
|
||||||
"""
|
|
||||||
bw = {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5, 'F': 6, 'G': 7, 'H': 8, 'I': 9, 'J': 10, 'K': 11, 'L': 12, 'M': 13,
|
bw = {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5, 'F': 6, 'G': 7, 'H': 8, 'I': 9, 'J': 10, 'K': 11, 'L': 12, 'M': 13,
|
||||||
'N': 14,
|
'N': 14,
|
||||||
'O': 15, 'P': 16, 'Q': 17, 'R': 18, 'S': 19, 'T': 20, 'U': 21, 'V': 22, 'W': 23, 'X': 24, 'Y': 25, 'Z': 26}
|
'O': 15, 'P': 16, 'Q': 17, 'R': 18, 'S': 19, 'T': 20, 'U': 21, 'V': 22, 'W': 23, 'X': 24, 'Y': 25, 'Z': 26}
|
||||||
ubw = {v: k for k, v in bw.items()}
|
ubw = {v: k for k, v in bw.items()}
|
||||||
|
if pw is None:
|
||||||
eingabetext = Eingabe.get(1.0, END)
|
return hilfetext
|
||||||
text = eingabetext.rstrip()
|
|
||||||
pw = PW_Eingabe.get()
|
|
||||||
pw = pw.strip()
|
pw = pw.strip()
|
||||||
|
text = eingabetext.rstrip()
|
||||||
if text == "" or pw == "":
|
if text == "" or pw == "":
|
||||||
Ausgabe.insert(1.0, hilfetext + "\n")
|
return hilfetext
|
||||||
else:
|
else:
|
||||||
for b in pw:
|
for b in pw:
|
||||||
if b.upper() not in bw:
|
if b.upper() not in bw:
|
||||||
Ausgabe.insert(1.0, "Das Passwort darf nur die Buchstaben A-Z / a-z enthalten!\n", "re")
|
return "Das Passwort darf nur die Buchstaben A-Z / a-z enthalten!"
|
||||||
return
|
|
||||||
pwl = len(pw)
|
pwl = len(pw)
|
||||||
encoded_text = ""
|
encoded_text = ""
|
||||||
encoded_text_s = "" # wenn Leer und Sonderzeichen Schlüsselbuchstaben verbrauchen
|
encoded_text_s = "" # wenn Leer und Sonderzeichen Schlüsselbuchstaben verbrauchen
|
||||||
@@ -1823,16 +1815,11 @@ als auch nicht.
|
|||||||
else:
|
else:
|
||||||
decoded_text += ubw[ba].lower()
|
decoded_text += ubw[ba].lower()
|
||||||
decoded_text_s += ubw[bas].lower()
|
decoded_text_s += ubw[bas].lower()
|
||||||
Ausgabe.insert(1.0, encoded_text_s + "\n")
|
ausgabetext = f"_Dekodiert - normal:_ \n{decoded_text} \n_Kodiert - normal:_ \n{encoded_text} \n"
|
||||||
Ausgabe.insert(1.0, "Kodiert - Sonderzeichen verbrauchen Schlüsselbuchstaben:\n", "bu")
|
ausgabetext += f"_Dekodiert - Sonderzeichen verbrauchen Schlüsselbuchstaben:_ \n{decoded_text_s} \n"
|
||||||
Ausgabe.insert(1.0, decoded_text_s + "\n")
|
ausgabetext += f"_Kodiert - Sonderzeichen verbrauchen Schlüsselbuchstaben:_ \n{encoded_text_s} \n"
|
||||||
Ausgabe.insert(1.0, "Dekodiert - Sonderzeichen verbrauchen Schlüsselbuchstaben:\n", "bu")
|
return ausgabetext
|
||||||
Ausgabe.insert(1.0, encoded_text + "\n")
|
'''
|
||||||
Ausgabe.insert(1.0, "Kodiert - normal:\n", "bu")
|
|
||||||
Ausgabe.insert(1.0, decoded_text + "\n")
|
|
||||||
Ausgabe.insert(1.0, "Dekodiert - normal:\n", "bu")
|
|
||||||
|
|
||||||
|
|
||||||
def wolseley():
|
def wolseley():
|
||||||
hilfetext = """HILFE: [Wolseley-Chiffre]
|
hilfetext = """HILFE: [Wolseley-Chiffre]
|
||||||
Die Eingabe eines Schlüsselwortes ist hier erforderlich!!!
|
Die Eingabe eines Schlüsselwortes ist hier erforderlich!!!
|
||||||
|
|||||||
Reference in New Issue
Block a user