Otrzymujesz zaszyfrowany ciąg, zaszyfrowany przy użyciu bardzo prostego szyfru zastępczego.
Problem
Nie wiesz, co to jest szyfr, ale wiesz, że tekst zaszyfrowany jest w języku angielskim i że najczęstsze litery w języku angielskim to etaoinshrdlucmfwypvbgkqjxz w tej kolejności. Jedynymi dozwolonymi znakami są wielkie litery i spacje. Możesz przeprowadzić podstawową analizę - zaczynając od pojedynczych liter, ale możesz migrować do bardziej złożonej analizy wieloliterowej - na przykład U prawie zawsze następuje po Q, a tylko niektóre litery mogą występować dwa razy z rzędu.
Przykłady
clear : SUBMARINE TO ATTACK THE DOVER WAREHOUSE AND PORT ON TUESDAY SUNRISE
cipher: ZOQ DUPAEYSRYDSSDXVYSHEYNRBEUYLDUEHROZEYDANYKRUSYRAYSOEZNDMYZOAUPZE
clear : THE QUICK BROWN FOX BEING QUITE FAST JUMPED OVER THE LAZY DOG QUITE NICELY
cipher: TNAEPDHIGEMZQJLEVQBEMAHL EPDHTAEVXWTEODYUASEQKAZETNAERXFCESQ EPDHTAELHIARC
clear : BUFFALO BUFFALO BUFFALO BUFFALO BUFFALO BUFFALO BUFFALO
cipher: HV WRPDHV WRPDHV WRPDHV WRPDHV WRPDHV WRPDHV WRP
Wyzwania
Sprawdź, czy możesz odszyfrować tekst w każdym z tych szyfrów:
SVNXIFCXYCFSXKVVZXIHXHERDXEIYRAKXZCOFSWHCZXHERDXBNRHCXZR RONQHXORWECFHCUH
SOFPTGFIFBOKJPHLBFPKHZUGLSOJPLIPKBPKHZUGLSOJPMOLEOPWFSFGJLBFIPMOLEOPXULBSIPLBP
KBPBPWLIJFBILUBKHPGKISFG
TMBWFYAQFAZYCUOYJOBOHATMCYNIAOQW Q JAXOYCOCYCHAACOCYCAHGOVYLAOEGOTMBWFYAOBFF
ACOBHOKBZYKOYCHAUWBHAXOQW XITHJOV WOXWYLYCU
FTRMKRGVRFMHSZVRWHRSFMFLMBNGKMGTHGBRSMKROKLSHSZMHKMMMMMRVVLVMPRKKOZRMFVDSGOFRW
Mam macierze podstawień i czysty tekst dla każdej z nich, ale ujawnię je tylko wtedy, gdy stanie się to zbyt trudne lub ktoś tego nie zrozumie.
Zwycięzcą jest rozwiązanie, które może skutecznie odszyfrować większość wiadomości. Jeśli dwa rozwiązania są równie dobre, decyzje będą podejmowane w drodze głosowania.
źródło
Odpowiedzi:
Pyton
Zrozumiałem wszystkie tajne frazy, ale nie zamieszczę ich tutaj. Uruchom kod, jeśli cię to obchodzi.
Kod działa poprzez wybranie spacji, wyliczenie wszystkich możliwych podstawień dla każdego słowa, a następnie wyszukanie zgodnych podstawień. Pozwala również na użycie słów spoza leksykonu, aby radzić sobie z błędami w pisowni tekstu :)
Użyłem dużego leksykonu (~ 500 000 słów) z http://wordlist.sourceforge.net/ .
źródło
PHP (Nieukończone)
Jest to niekompletne rozwiązanie PHP, które działa z wykorzystaniem informacji o częstotliwości liter w pytaniu oraz słownika słów dopasowanych do wyrażeń regularnych opartych na najbardziej wiarygodnych literach w danym słowie.
Obecnie słownik jest dość mały, ale przy odpowiednim rozszerzeniu spodziewam się poprawy wyników. Rozważałem możliwość częściowych dopasowań, ale w obecnym słowniku powoduje to raczej pogorszenie, a nie poprawę wyników.
Nawet przy obecnym, małym słowniku myślę, że mogę dość bezpiecznie powiedzieć, co koduje czwarta wiadomość.
źródło