69 lines
1.7 KiB
Python
69 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf8 -*-
|
|
|
|
text = "Beispielklartext abcdefghijklmnopqrstuvwxyz"
|
|
# PW="Apfelstrudel"
|
|
PW = "teebaum"
|
|
# Chiffrat: IWBQYBWVDVZNOWFO ZIHKWXGCBBDVURTYSNQOMLEFPA
|
|
|
|
abc = "ABCDEFGHIKLMNOPQRSTUVWXYZ" # j wird als i chiffriert
|
|
|
|
text = text.upper()
|
|
PW = PW.upper()
|
|
if "J" in text:
|
|
text = text.replace("J", "I")
|
|
if "J" in PW:
|
|
PW = PW.replace("J", "I")
|
|
calpha = ""
|
|
for b in PW:
|
|
if b not in calpha:
|
|
calpha += b
|
|
for b in abc:
|
|
if b not in calpha:
|
|
calpha += b
|
|
CABC = {calpha[12]: calpha[12]}
|
|
c1 = calpha[:12]
|
|
c2 = calpha[13:]
|
|
c2 = c2[::-1]
|
|
for i in range(12):
|
|
CABC[c1[i]] = c2[i]
|
|
UCABC = {v: k for k, v in CABC.items()}
|
|
CABC.update(UCABC)
|
|
print(calpha)
|
|
atxt = ""
|
|
for b in text:
|
|
if b in CABC:
|
|
atxt += CABC[b]
|
|
else:
|
|
atxt += b
|
|
|
|
print(atxt)
|
|
hilfe = """
|
|
Die Woseley-Chiffre arbeitet mit einem
|
|
Schlüsselwort über welches dann ein Codequadrat
|
|
/Codealphabet gebildet wird mit welchem dann
|
|
sowohl kodiert als auch dekodiert wird.
|
|
Angefangen wird dabei mit dem jeweils ersten
|
|
Vorkommen eines Buchstaben im Schlüsselwort
|
|
und danach folgen die restlichen Buchstaben
|
|
des Alphabets die nicht im Schlüsselwort vorkommen.
|
|
Da hier nur 25 Zeichen zur Verfügung stehen wird
|
|
das J mit dem I zusammengefasst und als I behandelt
|
|
und dargestellt. Sonstige Zeichen die nicht im
|
|
Codealphabet vorhanden sind werden unverändert
|
|
ausgegeben.
|
|
Codequadrat mit Schlüsselwort: Teebaum
|
|
1 2 3 4 5
|
|
1 T E B A U
|
|
2 M C D F G
|
|
3 H I K L N
|
|
4 O P Q R S
|
|
5 V W X Y Z
|
|
Bei der Chiffrierung/Dechiffrierung wird
|
|
im Text nun der erste Buchstabe mit dem
|
|
letzten getauscht, der 2. mit dem vorletzten,
|
|
usw. also aus T wird Z und umgekehrt,
|
|
E<->Y, B<->X, A<->W usw..
|
|
nur ein K bleibt ein K
|
|
"""
|