Anda diberi string terenkripsi, dienkripsi menggunakan cipher substitusi yang sangat sederhana.
Masalah
Anda tidak tahu apa itu sandi tetapi Anda tahu sandi itu adalah bahasa Inggris dan bahwa huruf yang paling sering dalam bahasa Inggris adalah etaoinshrdlucmfwypvbgkqjxz dalam urutan itu. Satu-satunya karakter yang diizinkan adalah huruf besar dan spasi. Anda dapat melakukan analisis dasar - mulai dari satu huruf, tetapi Anda dapat bermigrasi ke analisis multi-huruf yang lebih kompleks - misalnya, U hampir selalu mengikuti Q, dan hanya beberapa huruf tertentu yang dapat datang dua kali berturut-turut.
Contohnya
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
Tantangan
Lihat apakah Anda dapat mendekripsi teks di masing-masing cipher ini:
SVNXIFCXYCFSXKVVZXIHXHERDXEIYRAKXZCOFSWHCZXHERDXBNRHCXZR RONQHXORWECFHCUH
SOFPTGFIFBOKJPHLBFPKHZUGLSOJPLIPKBPKHZUGLSOJPMOLEOPWFSFGJLBFIPMOLEOPXULBSIPLBP
KBPBPWLIJFBILUBKHPGKISFG
TMBWFYAQFAZYCUOYJOBOHATMCYNIAOQW Q JAXOYCOCYCHAACOCYCAHGOVYLAOEGOTMBWFYAOBFF
ACOBHOKBZYKOYCHAUWBHAXOQW XITHJOV WOXWYLYCU
FTRMKRGVRFMHSZVRWHRSFMFLMBNGKMGTHGBRSMKROKLSHSZMHKMMMMMRVVLVMPRKKOZRMFVDSGOFRW
Saya memiliki matriks pengganti dan teks yang jelas untuk masing-masing, tetapi saya hanya akan mengungkapkannya jika menjadi terlalu sulit atau seseorang tidak mengetahuinya.
Solusi yang dapat mendekripsi pesan paling berhasil adalah pemenangnya. Jika dua solusi sama baiknya, mereka akan diputuskan oleh penghitungan suara.
sumber
Jawaban:
Python
Saya telah menemukan semua frasa rahasia, tetapi saya tidak akan mempostingnya di sini. Jalankan kode jika Anda peduli.
Kode berfungsi dengan memilih karakter spasi, menghitung semua kemungkinan penggantian untuk setiap kata, kemudian mencari substitusi yang kompatibel. Hal ini juga memungkinkan untuk beberapa kata out-of-leksikon untuk berurusan dengan kesalahan ejaan di cleartext :)
Saya menggunakan leksikon besar (~ 500 ribu kata) dari http://wordlist.sourceforge.net/ .
sumber
PHP (Tidak Lengkap)
Ini adalah solusi PHP tidak lengkap yang berfungsi menggunakan informasi frekuensi huruf dalam pertanyaan ditambah kamus kata-kata yang cocok dengan ekspresi reguler berdasarkan pada huruf yang paling dapat diandalkan dalam kata yang diberikan.
Saat ini kamusnya cukup kecil tetapi dengan perluasan yang sesuai saya mengantisipasi bahwa hasilnya akan meningkat. Saya telah mempertimbangkan kemungkinan kecocokan sebagian tetapi dengan kamus saat ini, ini menghasilkan degradasi dan bukannya perbaikan pada hasilnya.
Bahkan dengan kamus kecil saat ini, saya rasa saya bisa mengatakan dengan aman apa yang disandikan pesan keempat.
sumber