Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Eine Häufigkeitsanalyse

Einen verschlüsselten Text knacken

Der folgende Geheimtext soll entschlüsselt werden. Wir gehen davon aus, dass der Geheimtext mit der Verschiebemethode erzeugt wurde. Leider ist der Schlüssel (d.h. die Verschiebezahl) nicht bekannt.

XREQXRCCZVEZJKZEUIVZKVZCVXVKVZCKVZEVEURMFESVNFYEVEUZVSVCXVIUVEREUVI
VEUZVRHLZKREVILEUUVEUIZKKVEUZVUZVZEZYIVIVZXVEVEJGIRTYVBVCKVEXVEREEK
NVIUVELEUZELEJVIVIXRCCZVIYVZJJVEJZVRCCVLEKVIJTYVZUVEJZTYLEKVIVZEREU
VIZEJGIRTYVXVNFYEYVZKVELEUXVJVKQVEUZVXRCCZVIKIVEEKMFEUVERHLZKREVIEU
VIWCLJJXRIFEEVMFEUVESVCXVIEUZVDRIEVLEUUZVJVZEVUZVKRGWVIJKVERCCUZVJV
IJZEUUZVSVCXVILEUQNRIUVJNVXVENVZCJZVMFEUVIBLCKLILEUCVSVEJNVZJVUVIIF
VDZJTYVEGIFMZEQRDNVZKVJKVEVEKWVIEKJZEUJVYIJVCKVEBRLWCVLKVQLUZVJVEBF
DDVELEUURJNRJQLIMVINVZTYCZTYLEXUVIXVDLVKVIWLVYIKVZEWLVYIVELEUNVZCJZ
VUVEXVIDREVEUZVAVEJVZKJUVJIYVZEVJCVSVELEUDZKUVEVEJZVJKRVEUZXBIZVXWL
VYIVEJVYIERYVJZEURLJUZVJVDXILEULVSVIKIVWWVERLTYUZVYVCMVKZVIUZVLVSIZ
XVEXRCCZVIREKRGWVIBVZKNVZCJZVJZTYZEWRJKKRVXCZTYVEXVWVTYKVEDZKUVEXVI
DREVEDVJJVENFSVZJZVUZVJVVEKNVUVIMFEZYIVDXVSZVKWVIEYRCKVEFUVIJVCSJKZ
EUVIVEXVSZVKBRVDGWVEVZEKVZCURMFEUVENZVXVJRXKUZVXRCCZVISVNFYEVEWZEUV
KJVZEVELIJGILEXREUVIIYFEVNZIUSVXIVEQKMFEUVIXRIFEEVUVDFQVRELEUUVDXVS
ZVKUVISVCXVIVIJKIVTBKJZTYMFEUVEJVHLREVIELEUYVCMVKZVIEYZESZJQLDIYVZE
LEUQVZXKERTYEFIUVEURJXVSZVKUVISVCXVISVXZEEKREUVERVLJJVIJKVEXIVEQVEX
RCCZVEJVIJKIVTBKJZTYSZJREUVELEKVIVEKVZCUVJIYVZEJLEUCZVXKERTYEFIUFJK
VERHLZKREZVEVIJKIVTBKJZTYMFEUVDWCLJJXRIFEEVSZJREUZVGPIVERVVELEUQLUV
DAVEZXVEKVZCUVJFQVREJUVISZJJGREZVEIVZTYKVJCZVXKZEIZTYKLEXEFIUNVJKVE

Aufgabe 1

Warum könnte Buchstaben zählen hier weiterhelfen?

Buchstabenhäufigkeiten ermitteln

Das folgende Programm kann man benutzen, um die Häufigkeit von Buchstaben in einem Text automatisiert zu bestimmen.

text = 'ABRAKADABRASIMSALABIM'

anzahl = 0
for zeichen in text:
    if zeichen == 'A':
        anzahl = anzahl + 1
print('A', ':', anzahl)

anzahl = 0
for zeichen in text:
    if zeichen == 'B':
        anzahl = anzahl + 1
print('B', ':', anzahl)

anzahl = 0
for zeichen in text:
    if zeichen == 'C':
        anzahl = anzahl + 1
print('C', ':', anzahl)

anzahl = 0
for zeichen in text:
    if zeichen == 'D':
        anzahl = anzahl + 1
print('D', ':', anzahl)

# ...

Aufgabe 2

(a) Teste das Programm. Wie müsste man es fortsetzen?

(b) Das vorliegende Programm gilt als nicht elegant konzipiert. Warum wohl?

X

Fehler melden

X

Suche