The Vigenere cipher adalah cipher polyalphabetic sederhana yang pada dasarnya diterapkan salah satu dari beberapa cipher Caesar, menurut kunci. Pada dasarnya huruf-huruf pada tombol menunjukkan alfabet yang bergeser untuk digunakan. Untuk itu ada alat sederhana, yang disebut kotak Vigenère:
Di sini setiap baris adalah alfabet terpisah, dimulai dengan huruf yang sesuai dengan kunci. Kolom kemudian digunakan untuk menentukan huruf ciphered. Dekripsi bekerja dengan cara yang hampir sama, hanya sebaliknya.
Misalkan kita ingin mengenkripsi string CODEGOLF
. Kami juga membutuhkan kunci. Dalam hal ini kuncinya adalah FOOBAR
. Ketika kunci lebih pendek dari plaintext kita memperpanjangnya dengan pengulangan, oleh karena itu kunci sebenarnya yang kita gunakan adalah FOOBARFO
. Kami sekarang mencari huruf pertama dari kunci, yaitu F
untuk menemukan alfabet. Itu dimulai, mungkin tidak mengejutkan, dengan F
. Sekarang kita temukan kolom dengan huruf pertama dari plaintext dan huruf yang dihasilkan adalah H
. Untuk huruf kedua kita miliki O
sebagai surat kunci dan surat teks biasa, menghasilkan C
. Terus seperti itu akhirnya kita dapatkan HCRFGFQT
.
Tugas
Tugas Anda sekarang adalah menguraikan pesan, diberi kunci. Namun, karena kita telah melampaui abad ke-16 dan memiliki komputer, setidaknya kita harus mendukung alfabet yang sedikit lebih besar:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
Konstruksi alun-alun Vigenère masih sangat sama dan sandi masih bekerja dengan cara yang sama. Hanya sedikit ... sulit untuk memberi di sini secara penuh.
Memasukkan
Input diberikan pada input standar sebagai dua baris teks yang terpisah, masing-masing diakhiri oleh satu baris. Baris pertama berisi kunci sementara yang kedua berisi ciphertext.
Keluaran
Satu baris, berisi pesan yang diuraikan.
Kondisi menang
Karena enkripsi kadang-kadang dianggap sebagai senjata, kodenya harus pendek untuk memudahkan penyelundupan. Semakin pendek semakin baik, karena mengurangi kemungkinan penemuan.
Masukan sampel 1
Key
miQ2eEO
Output sampel 1
Message
Masukan sampel 2
ThisIsAKey
CoqKuGRUw29BiDTQmOpJFpBzlMMLiPb8alGruFbu
Output sampel 2
ThisWorksEquallyWellWithNumbers123894576
Seminggu telah berlalu. Solusi terpendek saat ini telah diterima. Bagi mereka yang tertarik, dalam kontes kami kami memiliki kiriman dan panjang berikut:
130 - Python
146 - Haskell
195 - C
197 - C
267 - VB.NET
Dan solusi kami sendiri yang tidak diberi peringkat dengan yang lain:
108 - Ruby
139 - PowerShell