Feladatok‎ > ‎

Viginère-kódolás

Leírás

Egy összetettebb kódolás, amivel szövegeket tudunk rejtjelezni. A Caesar-kódolás kiterjesztése, mivel nem feltétlen ugyanannyival csúsztatunk el minden karaktert, hanem egy szabályosság szerint. Az egyszerűség kedvéért vehetjük csupa nagybetűsnek a szöveget, de megoldható kis- és nagybetűkre is.

Ehhez a kódoláshoz szükségünk van egy titkos kulcsra, ami általában egy hosszabb, értelmes szó. Ezt a kulcsot ismernie kell a kódoló és a dekódoló félnek is. Nézzünk egy példát rá! A mi esetünkben  a titkos kulcs legyen az, hogy GOULASH. Így tudjuk vele kódolni az üzenetet:

  THE CLEANER AND NICER THE PROGRAM,
+ GOU LASHGOU LAS HGOUL ASH GOULASH
====================================
  ZVY NLWHTSL LNV UOQYC TZL VFIRRST,

(Az A-t a 0-hoz, a B-t az 1-hez, ... a Z-t a 25-höz rendeljük, és így adjuk őket össze. Minden egyéb karaktert beleírhatunk a kódoltba rejtjelezés nélkül)

Készítsetek programot, amivel egy tetszőlegesen hosszú szöveges fájlt lehet rejtjelezni bármilyen kulccsal. Készítsétek el a dekódoló programot is!

Bemenet

  • A standard input első sorában egy k vagy egy d, attól függően, hogy kódolni vagy dekódolni szeretnénk. A második sor a titkoskulcsot tartalmazza.
  • Egy szöveges fájl (szoveg.txt), a kódolandó szöveg

Kimenet

  • Egy szöveges fájl, kodolt.txt.

Példa

 Bemenet Kimenet 
Standard input:
k
GOULASH

szoveg.txt:
"THE CLEANER AND NICER THE PROGRAM, THE FASTER IT'S GOING TO RUN. AND IF IT DOESN'T, IT'LL BE EASY TO MAKE IT FAST." (JOSHUA BLOCH)
kodolt.txt
"ZVY NLWHTSL LNV UOQYC TZL VFIRRST, ZVY QAKAKF CE'S YVOBA EO JBT. OHO IX PZ RIPSF'A, OH'FW BW LGGS EO EHQS CE FSZZ." (XIDHMH HZINH)

Hasznos lehet

Comments