O firma
de securitate a angajat un grup de hackeri sa sparga codul pe care firma ar
intentiona (in cazul in care hackerii esueaza) sa il utilizeze in sistemele
proprii.
Codul utilizeaza o cheie foarte lunga, constituita dintr-o secventa de bytes,
cheie care se schimba saptamanal. Cheia este utilizata pentru a codifica toate
mesajele transmise de firma utilizand operatia XOR (disjunctie exclusiva) byte
cu byte astfel:
Ei = Ki XOR Ci,
unde Ei este al i-lea
byte din mesajul codificat, Ki
este al i-lea byte al cheii,
iar Ci este al i-lea
byte din mesajul original.
Hackerii nu au reusit sa determine cheia, dar au gasit un functionar de la departamentul transmisiuni care, pentru o sticla de palinca si 3 caltabosi, a fost de acord sa faca un lucru aparent nevinovat - a codificat un mesaj de doua ori: mai intai a codificat mesajul original, apoi a codificat mesajul original precedat de un caracter spatiu. Apoi a transmis ambele codificari.
Cerinta
Scrieti un program care, cunoscand
mesajul original codificat (de lungime N
bytes), precum si mesajul original precedat de un spatiu codificat (de lungime
N+1 bytes), determina cei N+1
bytes din care este constituita cheia de codificare.
Date de
intrare
Fisierul de intrare
cod.in contine doua linii. Pe
prima linie se afla 2N caractere,
reprezentand in ordine cei N
bytes ai mesajului original codificat. Cea de a doua linie contine 2N+2
caractere, reprezentand cei N+1
bytes ai mesajului precedat de spatiu codificat. Fiecare byte este specificat
prin doua caractere din multimea {'0','1',...,'9','A',
...,'F'} ce reprezinta scrierea in baza 16 a continutului acelui byte.
Date de
iesire
Fisierul de iesire
cod.out va contine o singura
linie ce va contine 2N+2 caractere,
care reprezinta cei N+1 bytes
ai cheii (specificata de asemenea in format hexazecimal ca si in fisierul de
intrare).
Restrictii
1<= N <= 10000
Exemple
cod.in | cod.out |
05262C5269143F314C2A69651A264B
610728413B63072C52222169720B425E |
41434D2049435043204E454552432732 |
Timp maxim de executie/test: 0.1 secunde
prof.
Marinel Serban
Liceul de
Informatica "Grigore Moisil" Iasi
Contact:marinel_serban@yahoo.com