Cifrado usando XOR. C++ y Linux

Hoy aplicaremos un tipo de cifrado basado en un operador lógico XOR. Programaremos en C++ y compilaremos desde el terminal.
El operador XOR opera a nivel de bit
A ^ A = 1
A ^ B = 0
(A ^ B) ^ B = B

Como ejemplo aplicaremos a la palabra nuke el operador XOR (la contraseña de cifrado que usaremos bull)

XOR
Cifrado XOR

En este tipo de cifrado, si se vuelve a cifrar una segunda vez con la misma clave obtengo el mensaje original. Usado de forma aislada como único método de cifrado es muy débil, pero esta incluido en algoritmos más complejos como puede ser AES.

Programa de cifrado usando XOR

  • Crearemos un archivo llamado XOR.cpp
  • El programa nos debe pedir la frase de cifrado y la clave.
  • Debe aplicar el operador XOR bit a bit.
  • Nos mostrará por pantalla como se va aplicando el operador letra a letra y la frase final cifrada.

Puedes copiarlo y pegarlo con cualquier editor de texto para hacer modificaciones y pruebas

#include <iostream>
#include <string>
using namespace std;int main(){// Variables
int a,b,c;
int i,j;
string frase;
string clave;string res;//Entrada de Datos
cout << “Este programa encripta una frase usando el operador XOR”;
cout << “n”;
cout << “Introduce la frase para encriptarn”;
getline(cin,frase);
cout << “clave:”;
cin >> clave;
res = frase;//Se aplica el operador XOR
for(i = 0; i < frase.length() ; i++){
a = int (frase[i]);
j = i % clave.length();
b = int (clave[j]);
c = a ^ b;
res[i] = char( c );

//Resultados en pantalla
cout << frase[i]<<” XOR ” ;
cout << clave[j];
cout << ” = ” << res[i] ; cout << “n”; }
cout << “La frase encriptada es:n”;
cout << res;
cout << “n”;
return 0;
}

Compilando y Ejecutando.

Compilamos desde el terminal usando; g++ -o XOR XOR.cpp
Y ejeculamos ./XOR
En el ejemplo usaremos como frase para cifrar: nukebull y clave: +-*
Y lo volveremos a aplicar una segunda vez al resultado con la misma clave para probar que obtenemos la frase original.

[nukebull XOR]$ g++ -o XOR XOR.cpp
[nukebull XOR]$ ./XOR
Este programa encripta una frase usando el operador XOR
Introduce una frase para encriptar
nukebull
clave:+-*
n XOR + = E
u XOR - = X
k XOR * = A
e XOR + = N
b XOR - = O
u XOR * = _
l XOR + = G
l XOR - = A
La frase encriptada es:
EXANO_GA

[nukebull XOR]$ ./XOR
Este programa encripta una frase usando el operador XOR
Introduce una frase para encriptar
EXANO_GA
clave:+-*
E XOR + = n
X XOR - = u
A XOR * = k
N XOR + = e
O XOR - = b
_ XOR * = u
G XOR + = l
A XOR - = l
La frase encriptada es:
nukebull

Cualquier consulta estaré encantado de responderos.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s