Kriptoqrafiya ilə Ədalətli Oynamaq#6649

Kriptoqrafiya ilə Ədalətli Oynamaq

1 saniyə
64 meqabayt
Orta

Şifrələmə, açıq mətn götürərək müvafiq şifrli mətn yaratmaq prosesidir. Bu məqsədlə istifadə olunan üsullardan biri Playfair şifrəsidir. Bu şifrə 1850-ci illərdə Charles Wheatstone tərəfindən icad edilmişdir (amma adını onun ən qızğın təbliğatçılarından biri olan Şotlandiyalı alim Lyon Playfair-dən almışdır). Bir çox əvəzetmə şifrələrindən fərqli olaraq, Playfair şifrəsi hər dəfə tək hərfləri deyil, diqraflar adlanan iki hərf qruplarını şifrələyir. Şifrələmə prosesi yalnız şifrəni istifadə edən iki tərəfə məlum olan gizli açar tərəfindən yaradılan 5×5 şəbəkədən istifadə edir (ümid edirik). Şəbəkə aşağıdakı kimi yaradılır: Açarın hərflərini, hər kvadrata bir hərf olmaqla, yuxarıdan başlayaraq sıra üzrə yazırsınız. Açarın təkrarlanan hərfləri atlanılır. Bu tamamlandıqdan sonra, əlifbada istifadə olunmamış qalan hərflər ardıcıllıqla qalan kvadratlara yerləşdirilir, I və J eyni kvadratı paylaşır. Məsələn, əgər açar "ECNA PROGRAMMING CONTEST" olsaydı, yaradılan kvadrat aşağıdakı kimi görünərdi:

Diqrafı aşağıdakı qaydalarla şifrələyirsiniz:

  1. Əgər hər iki hərf eyni sıradadırsa, hər birini dərhal sağındakı hərflə əvəz edin (sonda dolanaraq). Məsələn, yuxarıdakı şəbəkədən istifadə edərək açıq mətn diqrafı DS FB kimi, AP isə PE kimi şifrələnir.

  2. Əgər hər iki hərf eyni sütundadırsa, hər birini dərhal altındakı hərflə əvəz edin (yenə də altda dolanaraq). Məsələn, PF IU (və ya JU) kimi, WO isə CS kimi şifrələnir.

  3. Əks halda, birinci simvolu öz sırası boyunca sürüşdürün ki, ikinci simvolun sütununda olsun və eyni şeyi ikinci simvol üçün edin. Nəticədə əldə etdiyiniz iki simvol diqrafın şifrələnmiş simvollarıdır. Əgər orijinal diqrafı şəbəkədə bir düzbucağın küncləri kimi görsəniz, onları digər iki küncdəki simvollarla əvəz edirsiniz. Məsələn, TU FH kimi, UT HF kimi və ZC WP kimi şifrələnir.

Diaqraf eyni hərfi iki dəfə ehtiva edəndə nə baş verir? Orijinal Playfair şifrəsində iki hərfin arasına 'X' hərfini daxil edirsiniz və şifrələməyə davam edirsiniz. Əgər hərflərin sayı təkdirsə, açıq mətnin sonuna əlavə 'X' istifadə edirsiniz. Beləliklə, açıq mətn "OOPS" əvvəlcə diqraflara "OX", "OP" və "SX" çevrilir və sonra "GWICBW" kimi şifrələnir (yuxarıdakı şəbəkədən istifadə edərək). Qeyd edək ki, açıq mətn "POOS" heç bir əlavə hərfə ehtiyac duymur, çünki iki 'O' eyni diqrafda görünmür.

Playfair şifrəsini bir sadə şəkildə dəyişdirəcəyik: Həmişə 'X' daxil edilmiş hərf kimi istifadə etmək əvəzinə, ilk dəfə daxil etmə lazım olduqda 'A', sonra 'B' və s. istifadə edin (lakin heç vaxt daxil edilmiş hərf kimi 'J' istifadə etməməlisiniz; sadəcə 'I'-dən 'K'-ya keçin). 'Z'-yə çatdıqda, yenidən 'A' istifadə etməyə başlayırsınız. Əgər daxil edilmiş hərf eyni iki hərfdən ibarət diqrafa səbəb olarsa, sadəcə növbəti daxil edilmiş hərfə keçirsiniz. Məsələn, "OOPS" indi diqraf axını "OA", "OP", "SB" olur və açıq mətn "AABCC" diqraf axını "AB", "AB", "CD", "CE" olur.

Bir açar və açıq mətn verildikdə, müvafiq şifrli mətni yaratmalısınız.

Giriş

Giriş faylı n ədəd problem nümunəsini göstərən bir tam ədədlə başlayacaq. Hər bir nümunə iki sətirdən ibarətdir, birinci sətir açarı, ikinci isə şifrələnəcək açıq mətni ehtiva edir. Bunların hər ikisi böyük və kiçik hərfləri, eləcə də boşluqları və əlifba xarici simvolları (hər ikisi nəzərə alınmamalıdır) ehtiva edə bilər. Sadəlik üçün, heç bir açar və açıq mətndə 'j' və 'J' hərfləri görünməyəcək.

Çıxış

Hər bir problem nümunəsi üçün, böyük hərflərlə və boşluqsuz müvafiq şifrli mətni göstərən iş nömrəsini çıxarın. Həmişə şifrli mətndə 'J' əvəzinə 'I' hərfini istifadə edin.

Nümunələr

Nümunə 1

Loading
Loading