ADFGVX
Cifrul ADFGVX este un cifru ce folosește o matrice 6x6 care conţine literele alfabetului englez si cifre. Cifrul functioneaza asa:
- se citeste matricea, un mesajul si o cheie.
- In matrice, linia
1si coloana1au codulA, linia2si coloana2au codulD, linia3si coloana3au codulF, linia4si coloana4au codulG, linia5si coloana5au codulV, iar linia6si coloana6au codulX. - Fiecare litera din mesaj este inlocuita cu un codul liniei si coloanei pe care se afla in matrice.
- literele codurilor obtinute sunt puse intr-o matrice care are atatea coloane cate caractere are cheia(ultima linie a noii matrici poate fi incompleta).
- coloanele noii matrici au codul literei din cheie de pe pozitia egala cu numarul de ordine al coloanei.
- coloanele sunt sortate in functie de ordinea alfabetica al literei pe care o au asociata.
- In final se afiseaza matricea noua parcursa pe coloane (pentru a fi mai clar, literele se afiseaza fara spatii intre ele, iar cand se trece pe o noua coloana, se va pune un spatiu).
Cerinta
Vi se ofera un numar c si matricea pentru criptare.Pentru c=1, vi se ofera un mesaj si o cheie si trebuie sa criptati mesajul. Pentru c=2, vi se ofera mesajul criptat si o cheie si trebuie sa decriptati mesajul.
h1. Date de intrare
Fișierul de intrare adfgvx.in conține pe prima linie numărul c, iar pe urmatoarele linii matricea, mesajul si cheia.
Date de ieșire
Fișierul de ieșire adfgvx.out va conține pe prima linie mesajul criptat sau decriptat, in functie de c.
Restricții și precizări
1 ≤ lungimea mesajului necriptat ≤ 10000001≤c≤2- cheia va avea numai litere distincte
h1. Exemplul 1:
adfgvx.in
1 NA1C3H 8TB2OM E5WRPD 4F6G7I 9J0KLQ SUVXYZ ATTACKAT1200AM PRIVACY
adfgvx.out
DGDD DAGD DGAF ADDF DADV DVFA ADVX
Exemplul 2:
adfgvx.in
2 NA1C3H 8TB2OM E5WRPD 4F6G7I 9J0KLQ SUVXYZ DGDD DAGD DGAF ADDF DADV DVFA ADVX PRIVACY
adfgvx.out
ATTACKAT1200AM
Explicatie:
*codul literelor va fi: AD,DD,DD,AD,AG,VG,AD,DD,AF,DG,VF,VF,AD,DX.
*Matricea noua va arata astfel:
P R I V A C Y
A D D D D D A
D A G V G A D
D D A F D G V
F V F A D D X
*Dupa ce sortam coloanele, matricea va arata astfel:
A C I P R V Y
D D D A D D A
G A G D A V D
D G A D D F V
D D F F V A X