⭐️ Antike Verschlüsselung mit Python
Skytale
⚠️ Nicht Eingeloggt Speichern nur mit GBSL-Login möglich. Login
to_skytale.py
klartext = 'Skytale'
schlüssel = 3
zeilen = []
# füge für jede Zeile einen leeren Text ein
for i in range(schlüssel):
zeilen.append('')
# verteile die Buchstaben auf die Zeilen
nr = 0
for buchstabe in klartext:
zeilen[nr] = zeilen[nr] + buchstabe
nr = nr + 1
if nr == schlüssel:
nr = 0
# alle Zeilen mit einer neuen Zeile verknüpfen
verschlüsselt = '\n'.join(zeilen)
print(verschlüsselt)
⚠️ Nicht Eingeloggt Speichern nur mit GBSL-Login möglich. Login
from_skytale.py
verschlüsselt = '''\
Ste
ka
yl'''
zeilen = verschlüsselt.splitlines()
# die erste Zeile gibt vor, wie viele Spalten es gibt
spalten = len(zeilen[0])
klartext = ''
# für jede Spalte...
for spalte in range(spalten):
# wird in jeder Zeile...
for zeile in zeilen:
if len(zeile) > spalte:
# der Buchstabe in dieser Spalte dem Text hinzugefügt
klartext = klartext + zeile[spalte]
print(klartext)
Polybios
⚠️ Nicht Eingeloggt Speichern nur mit GBSL-Login möglich. Login
to_polybios.py
QUADRAT = [
'A', 'B', 'C', 'D', 'E',
'F', 'G', 'H', 'I', 'K',
'L', 'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T', 'U',
'E', 'X', 'Y', 'Z', ' '
]
klartext = 'Hallo'
klartext = klartext.upper().replace('J', 'I').replace('V', 'U')
verschlüsselt = ''
for buchstabe in klartext:
index = QUADRAT.index(buchstabe)
spalte = index % 5 # berechnet den ganzzahligen Rest bei einer Division durch 5
zeile = index // 5 # berechnet die ganzzahlige Division durch 5
verschlüsselt = verschlüsselt + f'{zeile + 1}{spalte + 1} '
print(verschlüsselt.strip()) # strip entfernt Leerzeichen an den Rändern
Aufgabe
Lesen Sie das Programm durch und versuchen Sie, jede Zeile zu verstehen.
Flicken Sie den Code, so dass der verschlüsselte Text lesbar wird.
⚠️ Nicht Eingeloggt Speichern nur mit GBSL-Login möglich. Login
from_polybios.py
QUADRAT = [
'A', 'B', 'C', 'D', 'E',
'F', 'G', 'H', 'I', 'K',
'L', 'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T', 'U',
'E', 'X', 'Y', 'Z', ' '
]
verschlüsselt = '35 34 31 53 12 24 34 43'
klartext = ''
zahlen = verschlüsselt.split(' ')
for zahl in zahlen:
zeile = int(zahl[0])
spalte = int(zahl[1])
index = 0
klartext = klartext + QUADRAT[index]
print(klartext)
Caesar-Chiffre
⚠️ Nicht Eingeloggt Speichern nur mit GBSL-Login möglich. Login
to_caesar.py
ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
SCHLÜSSEL = 'D'
ROT = ALPHABET.index(SCHLÜSSEL)
klartext = 'CAESAR'
klartext = klartext.upper()
verschlüsselt = ''
for buchstabe in klartext:
index = ALPHABET.index(buchstabe) + ROT
index = index % 26 # ganzzahliger Rest bei Division durch 26
verschlüsselt = verschlüsselt + ALPHABET[index]
print(verschlüsselt)
Aufgabe
Ändern Sie den Code so ab, dass der verschlüsselte Text wieder entschlüsselt werden kann.
⚠️ Nicht Eingeloggt Speichern nur mit GBSL-Login möglich. Login
from_caesar.py
ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
SCHLÜSSEL = 'D'
ROT = ALPHABET.index(SCHLÜSSEL)
verschlüsselt = 'JDLXV'
klartext = ''
verschlüsselt = klartext.upper()
for buchstabe in verschlüsselt:
index = 0
klartext = klartext + ALPHABET[index]
print(klartext)
⭐️ Zusatz
Substitutions-Chiffre
⚠️ Nicht Eingeloggt Speichern nur mit GBSL-Login möglich. Login
to_substitution.py
ALPHABET = 'A B C D E F G H I J K L M N O P Q R S T U V W X Y Z'.split(' ')
SCHLÜSSEL = 'I S X D L Y A V E B F G C W M Z N K O R H Q J P U T'.split(' ')
klartext = 'HEUTE GEHE ICH IM WALD JOGGEN'
klartext = klartext.upper()
verschlüsselt = ''
for buchstabe in klartext:
if buchstabe in ALPHABET:
index = ALPHABET.index(buchstabe)
verschlüsselt = verschlüsselt + SCHLÜSSEL[index]
else:
verschlüsselt = verschlüsselt + buchstabe
print(verschlüsselt)
⚠️ Nicht Eingeloggt Speichern nur mit GBSL-Login möglich. Login
from_substitution.py
ALPHABET = 'A B C D E F G H I J K L M N O P Q R S T U V W X Y Z'.split(' ')
SCHLÜSSEL = 'I S X D L Y A V E B F G C W M Z N K O R H Q J P U T'.split(' ')
verschlüsselt = 'EXV SEFL QMW CIAAGEWALW WIXV SELG'
verschlüsselt = verschlüsselt.upper()
klartext = ''
for buchstabe in verschlüsselt:
if buchstabe in SCHLÜSSEL:
index = SCHLÜSSEL.index(buchstabe)
klartext = klartext + ALPHABET[index]
else:
klartext = klartext + buchstabe
print(klartext)
⚠️ Nicht Eingeloggt Speichern nur mit GBSL-Login möglich. Login
schlüssel.py
from random import shuffle
schlüssel='A B C D E F G H I J K L M N O P Q R S T U V W X Y Z'.split(' ')
shuffle(schlüssel)
print(' '.join(schlüssel))