Feladat: I.504 Korcsoport: 16-17 Nehézségi fok: átlagos
Füzet: 2020/február, 101 - 102. oldal  PDF  |  MathML 
Témakör(ök): Feladat, Programozás, algoritmusok

A szöveg csak Firefox böngészőben jelenik meg helyesen. Használja a fenti PDF file-ra mutató link-et a letöltésre.

A középkorban használt titkosítási eljárások egyike a Cardano-rács. A titkosítandó szöveget ebben az esetben négyzet alakban rendezik el, a szöveg rejtjelezése és visszafejtése pedig az erre illeszkedő, megfelelő helyeken kivágott rostély ablakain keresztül történik. A szövegből a rácsban csak a betűk szerepelnek, az írásjelek és szóközök nem. A rostély egy-egy helyzetében a látható betűket sorfolytonosan kiolvassuk, a rostély háromszori körbefordításával a négyzet minden betűje felhasználásra kerül. (A dupla betűket két karakterrel kódoljuk, például GY helyett G és Y.)
A módszer bemutatása az I. 201. feladatban szerepelt, érdemes belenézni a kitűnő mintamegoldásokba
(https://www.komal.hu/feladat?a=feladat&f=I201&l=hu).
Készítsünk programot, amely a Cardano-ráccsal történő rejtjelezést és visszafejtést végzi el:

 
 

1.Olvassuk be és tároljuk el a Cardano-rácsot tartalmazó cardano.txt állományt, amely egy 6×6-os rostélyt tartalmaz. Az átlátszó rácspontokban 0 szerepel, a nem átlátszókban 1.
2.Készítsünk eljárást Forgat néven, amely lehetővé teszi a Cardano-rács -90 fokos (vagyis az óramutató járásával egyező irányú) elforgatását.
3.Írassuk ki a képernyőre a megadott Cardano-rácsot, valamint annak -90 fokos elforgatását. A két rács egymás alatt jelenjen meg.
4.A fenti mintán látható szöveget a titkos.txt fájl tartalmazza 6×6-os rácsokra bontva. Olvassuk be a fájl tartalmát, fejtsük vissza azt a megadott Cardano-rács segítségével a Forgat eljárás felhasználásával, majd a megfejtést sorfolytonosan írassuk ki a képernyőre.

Ha a titkosítandó szöveg ,,egy négyzetnél'' hosszabb, akkor azt több négyzetre kell bontani. Ha nem tesz ki a szöveg utolsó része egy teljes négyzetet, akkor azt véletlenszerű karakterekkel töltik fel.
A Cardano-rács alkalmazásával találkozhatunk Jules Verne: Sándor Mátyás c. könyvében is. A könyvben szereplő titkosítandó szöveget a nyilt.txt UTF-8 kódolású állomány tartalmazza. A könyvben a titkosítást két lépésben végezték, az alábbiakban ezt kell végrehajtani:
5.Olvassuk be a nyilt.txt fájl tartalmát, majd fordítsuk meg a szöveget. A beolvasott, illetve a megfordított szöveget egyaránt írassuk ki a képernyőre.
6.A felcserélt karakterekből álló szöveget rejtjelezzük a megadott Cardano-rács alkalmazásával, és az eredményt 6×6-os rácsban ‐ a minta szerint ‐ írassuk ki a sandormatyas.txt fájlba.

 
 

Beküldendő egy i504.zip tömörített állományban a program forráskódja és egy rövid leírás, ami megadja, hogy a forrásállomány melyik fejlesztői környezetben fordítható.
Letölthető fájlok: cardano.txt, titkos.txt, nyilt.txt.