Cerința
Se citește un text de maxim 256
caractere și o cheie de număr egal de caractere cu textul citit. După aplicarea Encripției XOR
, caracterele rezultate se vor afișa în format binar
deoarece în majoritatea cazurilor se obțin caractere neprintabile.
Encripția XOR
presupune aplicarea operatorului pe biți XOR
între text și cheie, între fiecare caracter din text și caracterul din cheie de pe aceeași poziție cu cel din text: text[i] XOR cheie[i]
. Pentru decriptare, operatorul se aplică între cheie și textul criptat.
Date de intrare
Fișierul de intrare xorcrypt.in
conține:
- Pe prima linie un text format din maxim
256
caractere. - Pe a doua linie cheia, de lungime egală cu textul.
Date de ieșire
Fișierul de ieșire xorcrypt.out
va conține o singură linie, având caracterele în format binar
separate prin spațiu.
Restricții și precizări
- Se va folosi alfabetul englez.
Exemplu
xorcrypt.in
xor key
xorcrypt.out
00010011 00001010 00001011
Explicație
x^k -> 00010011
o^e -> 00001010
r^y -> 00001011
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema XORCrypt:
//Afisare folosind o functie.
#include <fstream>
#include <string>
using File = std::fstream;
File in, out;
void CharBitPrint(char c)
{
for(int i=7; i>=0; i--) out<<((c>>i)&1);
out<<' ';
}
std::string text, key;
char xored;
int main()
{
in.open("xorcrypt.in", File::in);
out.open("xorcrypt.out", File::out | File::trunc);
std::getline(in, text);
std::getline(in, key);
for(std::string::size_type i=0; i<text.size(); i++)
{
xored=text[i]^key[i];
CharBitPrint(xored);
}
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #3101 XORCrypt
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3101 XORCrypt de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!