Arka fon
Yüz on üç yıl önce, amatör kriptograf Félix Delastelle , 25 harfli bir alfabenin iki permütasyonunu anahtar olarak kabul eden ve bu harflerden oluşan mesajları kodlayan dört köşeli bir şifre olan dört kare şifreli çalışmalarını yayınladı .
Çoğu kalem-kağıt şifresi gibi, dört-kare şifrenin bugün herhangi bir şifreleme değeri yoktur, ancak buluşu sırasında monografik muadillerine göre önemli bir avantajı vardır.
Yüz on üç yıl sonra Alice Delastelle, alfabenin boyutunu ve anahtar sayısını artırarak dört kare şifreyi geliştirmeye karar verir. [kaynak belirtilmeli]
Anahtar kurulumu
Alfabe aşağıdaki karakterleri içerir (boşluktan başlayarak):
!"#$%&'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ
Bir geçiş cümlesi verildiğinde, bu alfabenin bir permütasyonunu aşağıdaki gibi inşa ederiz:
Her karakterin yalnızca ilk oluşumunu sakla.
Kullanılmayan karakterleri alfabeden doğal sıralarına ekleyin.
Dört geçiş ifadesini dört tuşa çevirdikten sonra, her anahtarı bir kenar uzunluğu 7 karesine böleriz ve ortaya çıkan dört kareyi büyük bir kare oluşturacak şekilde düzenleriz.
Örneğin, geçiş ifadeleri
PROGRAMMING PUZZLES & CODE GOLF
POPULARITY CONTESTS & CODE BOWLING
CORRECT HORSE BATTERY STAPLE
DON'T TELL EVE!!!
anahtarlar şu şekilde inşa edilir ve düzenlenir:
PROGAMI POULARI
N UZLES TY CNES
&CDF!"# &DBWG!"
$%'()*+ #$%'()*
,-./:;< +,-./:;
=>?@BHJ <=>?@FH
KQTVWXY JKMQVXZ
CORET H DON'T E
SBAYPL! LV!"#$%
"#$%&'( &()*+,-
)*+,-./ ./:;<=>
:;<=>?@ ?@ABCFG
DFGIJKM HIJKMPQ
NQUVWXZ RSUWXYZ
Şifreleme
Gibi bir düz metin mesajı verildi
ALICE LOVES BOB.
uzunluğunu eşitlemek ve karakter çiftlerine bölmek için 0 veya 1 boşluk ekliyoruz:
["AL" "IC" "E " "LO" "VE" "S " "BO" "B."]
Her karakter çifti için ilk karedeki ilk karakteri (okuma sırası) ve ikincisini dördüncü sırada buluruz.
Ardından, kalan dört karedeki karakterleri, seçilen dört karakter, kenarları karelerin kenarlarına paralel olan bir dikdörtgen oluşturacak şekilde seçeriz.
Son olarak, karakter çiftini ikinci ve üçüncü karenin seçilen karakterleri ile değiştiriyoruz.
Örnek dizemiz için bu,
["PP" "A@" "E " "YT" "ZE" "EH" "=T" "<-"]
aşağıdaki şifre metniyle sonuçlanır:
PPA@E YTZEEH=T<-
Görev
Dört geçiş ifadesini ve bir düz metni kabul eden, şifrelemek için dört kareli şifrenin yukarıdaki varyantını kullanan ve ortaya çıkan şifreleme metnini döndüren bir program veya işlev yazın.
Detaylar:
Beş giriş dizesi yalnızca belirtilen alfabe karakterlerinden oluşacaktır.
Beş giriş dizesi herhangi bir sırayla okunabilir, örneğin yeni satırlarla sınırlandırılmış tek bir dize veya beş dizeden oluşan bir dizi olarak.
Dizelerin hiçbirinin boş olmadığını varsayabilirsiniz.
Çıktı tek bir dize olmalıdır.
Çıkışı STDOUT'a yazdırmayı seçerseniz, yalnızca şifre metninin karakterlerini ve (isteğe bağlı olarak) bir satırsonu satırını yazdırabilirsiniz.
Standart kod golf kuralları geçerlidir.
Test senaryoları
Tüm test durumlarında, ilk dört dize okuma düzenindeki anahtar karelere ve düz metne son giriş dizesine karşılık gelir.
Giriş
PROGRAMMING PUZZLES & CODE GOLF
POPULARITY CONTESTS & CODE BOWLING
CORRECT HORSE BATTERY STAPLE
DON'T TELL EVE!!!
ALICE LOVES BOB.
Çıktı
PPA@E YTZEEH=T<-
Giriş
!"#$%&'()*+,-./:;<=>
!"#$%&'()*+,-./:;<=>?@ABCDE
!"#$%&'()*+,-./:;<=>?@ABCDEFGHIJKL
!"#$%&'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRS
HELLO, WORLD!
Çıktı
LALLR)#TROKE !
Giriş
,'K AB-Q=?@("W$>XM).C#<I:G!OLP*+;SZJTU%NED/&VFHRY
:,-D$C<SU=IYHFVA;! JG/M&L+WT%#.Q@(N*R")EZOBKX?'>P
L()JX,BND?Z<>P*FU%=O@&KIC+A!Y:;$SWHR.EMG'/T"QV #-
<->CI")AP Q:+U;O/F(KH&ER!MW?X'VJLZ#.$,BSGN@TD%*Y=
SPIN THE PPCG WHEEL OF BLAME!
Çıktı
#>TE,VK+,ZQ(&<F@RA.NL@DM%NAC&>
Giriş
& %(,-#)$@?/=>'*"<:;!.+
=/$- ?;',@#!(&<")%.:>+*
&%-/<?.;$'#:=!( ,>"+*)@
=,<-*?#.'@/;>%!+:(& ")$
HNRA#JX$H %JAV+"GTS,
Çıktı
GOOD LUCK, HAVE FUN.