fbpx

Problema #3101 – XORCrypt – Rezolvari PBInfo

de Mihai-Alexandru

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:

Exemplu

xorcrypt.in

xor
key

xorcrypt.out

00010011 00001010 00001011

Explicație

x^k -> 00010011
o^e -> 00001010
r^y -> 00001011

#include <bits/stdc++.h>

using namespace std;

ifstream cin("xorcrypt.in");
ofstream cout("xorcrypt.out");

char a[256] , b[256] , rez[8];
int n , x , y;

void schimb(int n)
{
    for(int i = 0 ; i < 8 ; i++)
        rez[i] = '0';

    int ind = 7;
    while(n != 0)
    {
        rez[ind] = n % 2 + '0';
        ind--;
        n /= 2;
    }
    cout << rez << " ";
}

int main()
{
    cin.getline(a , 260);
    cin.getline(b , 260);
    n = strlen(a);
    for(int i = 0 ; i < n ; i++)
    {
        x = int(a[i]) , y = int(b[i]);
        schimb(x^y);
    }
    return 0;
}
Comentarii

S-ar putea sa iti placa