Poznaj zagadkę Enigmy, tworząc grę przygodową w Pythonie.

Kto z nas nie ma choćby jednego, najmniejszego sekretu? Zawsze znajdzie się jakaś informacja, którą chcielibyśmy schować przed światem.

Nasz sekret wygląda tak:

LMHKQ EHAKI ATIES MIPQJ IYKNY VOSDS H

To tajemnicze zdanie zaszyfrowaliśmy wykorzystując Enigmę, niemiecką maszynę szyfrującą z okresu II wojny światowej.

Stwórzmy prostą grą przygodową, jednocześnie ucząc się programowania w języku Python. W naszej pracy wykorzystamy środowisko o nazwie Skulpt, które pozwala uruchomić grę w przeglądarce. W ten sposób będziemy mogli udostępniać poszczególne rozdziały jako odrębne pliki. Na końcu zaś zaprezentujemy jeden wspólny, zawierający pełną grę.

Enigma to po grecku „zagadka”. Holenderski inżynier Hugon Koch ani trochę nie przesadził, tytułując tak swój pomysł – maszyna szyfrująca Enigma stała się jedną z największych zagadek drugiej wojny światowej. Koch przekazał swój projekt Niemcowi, Arturowi Scherbiusowi i to on zbudował niepozorne, przypominające maszynę do pisania urządzenie, które ukrywało w sobie doskonały, nierozszyfrowywalny aparat elektromechaniczny. Enigma składała się z 26-cio znakowej klawiatury, zestawu obracających się bębenków, osadzonych na wspólnej osi, zwanych wirnikami oraz mechanizmu, który za każdym uderzeniem w klawisz obracał jeden albo kilka wirników jednocześnie. Takie rozwiązanie czyniło powstające szyfry niemożliwymi do odkodowania. Ilość kombinacji w Enigmie wynosiła 10 do potęgi 114. To, uwaga: 5 172 165 503 971 832 752 302 775 832 450 732 675 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000. Liczba trudna do ogarnięcia możliwościami ludzkiego umysłu, czyż nie? No cóż, to był hit. Niemiecka firma Scherbius & Ritter nie nadążała z produkcją. Dostępu do Enigmy pożądali politycy, wojskowi, a nawet panie z towarzystwa – każdy miał jakieś informacje, które chciałby przekazać tylko adresatowi, bez udziału niepowołanych oczu.

Pracę nad dekodowaniem hitlerowskich meldunków stały się priorytetem dla wszystkich państw alianckich. Brytyjski wywiad wojskowy oznaczył Enigmę wojskowym kryptonimem ULTRA, jako najtajniejszy z tajnych – złamanie kodu stało się najbardziej strzeżoną informacją. Rejewski, Różycki i Zygalski, jako supereksperci zostali zaproszeni do brytyjskiego zespołu prowadzonego przez Alana Turinga, dziś uważanego za ojca sztucznej inteligencji. Rozszyfrowywanie odbywało się najpierw w Polsce, a po wybuchu wojny nasi geniusze musieli przedostać się do Francji. Pracowali przemieszczając się skrycie między Francją a Algierem i Hiszpanią. W katastrofie morskiej stracił wówczas życie jeden z nich, Jerzy Różycki. Rejewski i Zygalski po wielu perypetiach i trudach, a nawet aresztowaniu, dotarli wreszcie do Wielkiej Brytanii, gdzie rozpoczęli pracę w jednostce radiowej Sztabu Naczelnego Wodza Polskich Sił Zbrojnych w Stanmore-Boxmoor pod Londynem, gdzie pracowali do zakończenia wojny. Można by powiedzieć, że była to fantastyczna przygoda, gdyby nie to, że odbywała się w tak dramatycznych i skrajnie niebezpiecznych warunkach. Złamanie szyfru Enigmy, zapewniło polskim naukowcom ważne miejsce na kartach historii świata.

Co to ma wspólnego z językiem programowania, grą, nauką? Okazuje się, że wiele.

Przede wszystkim, jeśli chcemy bawić się w szyfrowanie, nie potrzebujemy fizycznych urządzeń (zresztą, dostępne są już tylko w muzeach). Wystarczy nam język programowania. Wykorzystamy bardzo rozpowszechniony Python. Jak jednak zaprogramować w Pythonie Enigmę? Przecież nie każdy jest jednocześnie matematykiem i kryptologiem, a na dodatek programistą!

Poniżej widzicie kod w języku Python, który realizuje szyfrowanie maszyną Enigma:
from enigma_module import *
use_these = [("I", "A"), ("II", "B"), ("III", "C")]
machine = Enigma(stecker="AQ BJ", rotors=use_these,
                 reflector="Reflector B", operator=True, word_length=5, stator="military")
machine.set_wheels("ABC")
szyfrogram = machine.parse("Zaszyfrowany tekst")

Gra będzie posiadała prosty scenariusz – bohater (powiedzmy, Marian Zygalski), musi zebrać 3 rotory, które po złożeniu w całość pozwolą odszyfrować wiadomość.

Zapraszam na stronę projektu:

https://kodujwpythonie.pl/pl/enigma

Cała treść artykułów i kody źródłowe są za darmo dostępne dla wszystkich. Chętne dziewczęta i chłopcy mogą próbować swoich sił w grze, mogą też próbować zmieniać kod i uczyć się programowania.


Print Friendly, PDF & Email
Jestem w:
Podoba się ? Podziel się z innymi.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Time limit is exhausted. Please reload CAPTCHA.

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

Skip to content