Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

Az I. 421. feladat (2017. február)

I. 421. Az első világháborúban fontossá vált a rádión küldött üzenetek rejtjelezése, hogy azokat az ellenség – lehallgatás esetén – ne tudja megfejteni. A háború egyik leghíresebb titkosítási rendszere az ADFGVX kódolás volt, amit a németek vezettek be, és 1918. március 5-én kezdtek el alkalmazni. Egy francia hadnagy, Georges Painvin azonban viszonylag hamar, már június 2-án megfejtett egy ezzel a kóddal rejtjelezett üzenetet.

A rejtjelezésnél használt kulcs két részből áll: egy \(\displaystyle 6\times 6\)-os kódtáblából, amely tartalmazza a 26 nagybetűt és a 10 számjegyet, valamint egy kódszóból.

A kódtábla első sorát és első oszlopát kiegészítik az A, D, F, G, V, X karakterekkel, ezek lesznek a sor-, illetve az oszlopazonosítók. (Azért ezeket a karaktereket választották, mert az akkoriban használt, nekik megfelelő Morse jelek jól elkülöníthetőek voltak.)

A példánkban használt táblázat az ábrán látható, a kódszó legyen KOMAL, a nyílt szöveg pedig legyen: AZAKCIO7KORINDUL.

Maga a rejtjelezés több lépésből áll:

1. Meghatározzuk a kódtábla alapján a nyílt szöveg karaktereinek koordinátáit (sor, oszlop), és azokat egymás mellé írjuk:

2. A kódszó karakterei alá sorfolytonosan beírjuk az így kapott koordinátasorozatot. Példánkban ezt az első táblázat mutatja.

3. Átrendezzük a táblázat oszlopait úgy, hogy a kódszó betűi névsorba kerüljenek. Az átrendezés utáni állapotot példánkban a második táblázat szemlélteti.

4. A titkos üzenetet úgy kapjuk meg, hogy a második (kódszó nélküli) táblázatot ,,oszlopfolytonossá'' alakítjuk. Példánkban:

XAVDXXADGVFAVAGGVADXGDGGXDVXVGFV

Készítsünk programot i421 néven, amely lehetővé teszi egy megadott szöveg rejtjelezését és visszafejtését a fenti leírás alapján. A program első parancssori argumentuma egy karakter, amely megadja, hogy a felhasználó az adatokat rejtjelezni vagy visszafejteni szeretné (R/V), második a kódot tartalmazó fájl neve, a harmadik a rejtjelezendő/visszafejtendő adatokat tartalmazó fájl neve, a negyedik pedig a kimeneti fájl neve legyen. A kódot tartalmazó fájl első hat sora a kódtábla sorait tartalmazza (szóközök és a koordináták nélkül), utolsó sora pedig a kódszót.

Feltételezhetjük, hogy a bemeneti adatok csak az angol ábécé fentieknek megfelelő nagybetűit tartalmazzák. Feltehetjük továbbá, hogy a rejtjelezendő/visszafejtendő állomány mérete legfeljebb 1000 karakterből áll, továbbá a kódszó nem hosszabb 10 karakternél.

Beküldendő egy i421.zip tömörített állományban a program forráskódja és dokumentációja, amely tartalmazza a megoldás rövid leírását, és megadja, hogy a forrásállomány melyik fejlesztői környezetben fordítható.

Letölthető fájlok (egy lehetséges kód, valamint egy lehetséges rejtjelezendő fájl): be.txt , kod.txt .

(10 pont)

A beküldési határidő 2017. március 10-én LEJÁRT.


Értékelés: A feladatra sajnos csak két megoldás érkezett, de mindkét megoldás szép, teljes értékű. A feladat megoldás során gondot okozhatott az oszlopok eltérő hossza visszafejtéskor, amelyet mindkét beküldő ügyesen megoldott.

Mintamegoldás: A közölt mintamegoldás Kis Lázár Bencétől, a dunaszerdahelyi Magyar Tanítási Nyelvű Magángimnázium 11. osztályos tanulójától származik, az alkalmazott fejlesztői környezet: Microsoft Visual Studio 2015.

i421.cpp


Statisztika:

2 dolgozat érkezett.
10 pontot kapott:Békési Péter, Kis Lázár Bence.

A KöMaL 2017. februári informatika feladatai