İki girdi satırı alan ve ikincisini Playfair şifreleme tekniğine göre şifrelemek için birincisini anahtar sözcük olarak kullanan bir program yazın.
Wikipedia, Playfair şifrelemesini bazı ayrıntılarıyla açıklar , ancak herhangi bir belirsizliği önlemek için kısa bir özet:
1. Bir anahtar tablo oluşturun:
JAnahtar sözcük grubundaki tüm tekrarları ile değiştirin I, sonra tüm alfabe dışı karakterleri ve tekrarlanan karakterleri soyun. 5 × 5 şifreleme tablosuna yerleştirin, kalan hücreleri alfabenin geri kalanıyla doldurun (hariç J; sevmiyoruzJ ).
Örnek:
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. Şifrelenecek mesajı hazırlayın
Her birini a Jile değiştirin I, tüm alfabe dışı karakterleri Xsoyun ve aynı harfi içeren çiftleri iki kez kırmak için a tuşunu kullanarak çiftlere bölün . Tek bir harfle sonuçlanırsanız X, sonuna ekleyin . (Not: - Rakamlar tam olarak dile edilecek olan ONE, TWO, THREEvb - ama bu zaten sizin için yapılmıştır varsayabiliriz.)
Örnek:
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. Şifreleme
Her harf çiftini sırayla şifreleyin. Anahtar tablonun farklı satır ve sütunlarındaysa, her birini diğer harfin bulunduğu sütundaki aynı satırdaki harfle değiştirin (örn. VM⇒ EI, LZ⇒ GQ). Aynı satırda (veya sütunda) yer alıyorlarsa, hemen sağdaki (veya altta) iki karakteri seçin, gerekirse sarın (örn. OE⇒ VR, ZG⇒KP ).
Örnek:
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
Bu işlem tarafından üretilen dize, programınızın vermesi gereken şifreli mesajdır.
Kurallar:
- Giriş metni ve tuşu
stdin, komut satırı bağımsız değişkenlerinden veya bu tür diğer kaynaklardan . Sabit kodlu girişe izin verilmiyor. - Programınızın geçiş deyimi ve mesajı için hem büyük hem de küçük harfleri kabul etmesi gerekir.
- Şifrelenmiş çıktı büyük veya küçük harf olabilir.
- Programınız en az 64 karakter uzunluğunda anahtar kelime öbeklerini ve en az 16 KB ileti metinlerini kabul etmelidir.
- ASCII olmayan girişi işlemek zorunda değilsiniz.
XXŞifreleme sırasında harf çiftinin oluşma olasılığını yoksayabilirsiniz .- Programın çıktısına boşluk eklemeye gerek yoktur.
- Yanıtınız, programınız tarafından üretilen bir mesaj, anahtar sözcük ve şifreli çıktı örneği içermelidir.
- Bu bir kod golf meydan okumadır, bu yüzden en kısa kod (bayt cinsinden) ile cevap kazanacaktır.
NOT: Birbirini izleyen harfleri yalnızca aynı çiftte görünüyorsa kırmanız gerektiğini lütfen unutmayın . Bu yüzden örneğin
MASSACHUSETTSşu şekilde şifrelenmelidirMA SX SA CH US ET TS- çiftSbölünmek zorundadır, ancak çiftTdeğildir.
JSevmiyoruz" APL hakkında benzer düşünceler barındırıyor musunuz?