Tulis program yang mengambil dua baris input dan gunakan yang pertama sebagai frase kunci untuk mengenkripsi yang kedua sesuai dengan teknik enkripsi Playfair.
Wikipedia menjelaskan enkripsi Playfair dalam beberapa detail , tetapi untuk menghindari ambiguitas, berikut ringkasan singkatnya:
1. Hasilkan tabel kunci:
Ganti semua kemunculan Jdalam frasa kunci dengan I, lalu hapus semua karakter non-alfabet dan karakter berulang. Masukkan ke dalam tabel enkripsi 5 × 5, mengisi sel-sel yang tersisa dengan sisa alfabet (kecuali J; kami tidak suka J).
Contoh:
S T A C K
O V E R F
Stack Overflow --> STACKOVERFLW --> L W B D G
H I M N P
Q U X Y Z
2. Siapkan pesan yang akan dienkripsi
Ganti setiap Jdengan I, strip semua karakter non-alfabet dan pisahkan menjadi pasangan, gunakan Xuntuk mematahkan pasangan yang mengandung huruf yang sama dua kali. Jika Anda berakhir dengan jumlah huruf ganjil, tambahkan Xdi bagian akhir. (Catatan: Angka telah dibilang penuh - ONE, TWO, THREE, dll - tetapi Anda dapat menganggap ini sudah dilakukan untuk Anda.)
Contoh:
In:
The cat crept into the crypt, crapped, and crept out again.
Out:
TH EC AT CR EP TI NT OT HE CR YP TC RA PX PE DA ND CR EP TO UT AG AI NX
3. Enkripsi
Enkripsi setiap pasangan huruf secara bergantian. Jika mereka berada di baris dan kolom dari tabel kunci yang berbeda, ganti masing-masing dengan surat dari baris yang sama dalam kolom di mana huruf lainnya ditemukan (misalnya, VM⇒ EI, LZ⇒ GQ). Jika mereka berada di baris yang sama (atau kolom), pilih dua karakter segera ke kanan (atau di bawah), balas jika perlu (misalnya, OE⇒ VR, ZG⇒ KP).
Contoh:
In:
TH EC AT CR EP TI NT OT HE CR YP TC RA PX PE DA ND CR EP TO UT AG AI NX
Out:
SI RA CA RD FM VU IC VS MO RD ZN AK EC MZ MF BC YN RD FM SV TV KB TM MY
String yang dihasilkan oleh proses ini adalah pesan terenkripsi, yang harus dihasilkan oleh program Anda.
Aturan:
- Teks dan kunci input dapat diperoleh dari
stdin, argumen baris perintah atau sumber lain semacam itu. Input kode-keras tidak diizinkan. - Program Anda harus menerima teks huruf besar dan kecil untuk frasa sandi dan pesannya.
- Output terenkripsi mungkin huruf besar atau kecil.
- Program Anda harus menerima frasa kunci paling tidak panjangnya 64 karakter, dan pesan teks minimal 16 KB.
- Anda tidak diharuskan menangani input non-ASCII.
- Anda dapat mengabaikan kemungkinan pasangan surat
XXterjadi selama enkripsi. - Tidak perlu menambahkan spasi putih ke output program.
- Jawaban Anda harus mencakup contoh pesan, frase kunci dan output terenkripsi yang dihasilkan oleh program Anda.
- Ini adalah tantangan kode golf, jadi jawaban dengan kode terpendek (dalam byte) akan menang.
CATATAN: Harap diingat bahwa Anda hanya perlu memecah huruf berurutan jika muncul dalam pasangan yang sama . Jadi misalnya
MASSACHUSETTSharus dienkripsi sebagaiMA SX SA CH US ET TS- gandaSharus dipisah, tetapi gandaTtidak.
J" Apakah Anda menyimpan sentimen serupa tentang APL?