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?