Rezolvare completă PbInfo #3101 XORCrypt

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:

  1. Pe prima linie un text format din maxim 256 caractere.
  2. 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 Adresa de email.

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!