Vigenere
La fel ca cifrul Cezar, cifrul Vigenere deplasează literele, dar acesta folosește o deplasare multiplă. Cheia este constituită din câțiva întregi ki, unde 0 ≤ ki ≤ 25.
Aceşti întregi pot fi, de exemplu, k = (21, 4, 2 19, 14, 17). Această cheie ar provoca deplasare primei litere cu 21, c1 = p1 + 21 (mod 26), a celei de-a doua cu 4, c2 = p2 + 4 (mod 26), ş.a.m.d. până la sfârşitul cheii și apoi de la început, din nou.
Pentru o memorare mai ușoară cheia este de regulă dată printr-un cuvânt – cheia de mai sus corespunde cuvântului vector, litera 'v'” corespondând numărului 21 (numerotarea începe de la 0), litera 'e' cu 4, etc.
Un exemplu de cifru Vigenere:
Textul clar: thisisanexampleofthevigenerecipher
Cheia: vector
Textul cifrat: olklwjvrgqodkpghtkcixbuviitxqzklgk
Cerința
Se citesc două texte a și b cu lungimea maximă de 255 de caractere. Să se afișeze textul după aplicarea cifrului Vigenere la textul a cu cheia b.
Date de intrare
Fișierul de intrare vigenere.in conține pe prima linie textul a iar pe a doua linie textul b.
Date de ieșire
Fișierul de ieșire vigenere.out va conține pe prima linie rezultatul criptării.
Restricții și precizări
- lungimea lui
b ≤Lungimea luia ≤ 255; - cele două șiruri vor conține doar litere mici din alfabetul englez.
Exemplu:
vigenere.in
pbinfo dio
vigenere.out
sjwqnc
Explicație
În Cifrul Vigenere începem numărătoarea caracterelor din cheie de la 0, astfel, caracterul 'd' din cheie deplasează caractrrul corespunzător din text cu 3 caractere; astfel, 'p' devine 's'. Acest procedeu se repetă și pentru restul șirului.