Criptografía con Python - Proceso XOR
En este capítulo, entendamos el proceso XOR junto con su codificación en Python.
Algoritmo
El algoritmo XOR de cifrado y descifrado convierte el texto sin formato en el formato de bytes ASCII y utiliza el procedimiento XOR para convertirlo en un byte especificado. Ofrece las siguientes ventajas a sus usuarios:
- Computación rápida
- No hay diferencia marcada en el lado izquierdo y derecho
- Fácil de entender y analizar
Código
Puede utilizar el siguiente fragmento de código para realizar el proceso XOR:
def xor_crypt_string(data, key = 'awesomepassword', encode = False, decode = False):
from itertools import izip, cycle
import base64
if decode:
data = base64.decodestring(data)
xored = ''.join(chr(ord(x) ^ ord(y)) for (x,y) in izip(data, cycle(key)))
if encode:
return base64.encodestring(xored).strip()
return xored
secret_data = "XOR procedure"
print("The cipher text is")
print xor_crypt_string(secret_data, encode = True)
print("The plain text fetched")
print xor_crypt_string(xor_crypt_string(secret_data, encode = True), decode = True)
Salida
El código para el proceso XOR le da el siguiente resultado:
Explicación
La función xor_crypt_string() incluye un parámetro para especificar el modo de codificación y decodificación y también el valor de la cadena.
Las funciones básicas se toman con módulos base64 que siguen el procedimiento / operación XOR para cifrar o descifrar el texto sin formato / cifrado.
Note - El cifrado XOR se utiliza para cifrar datos y es difícil de descifrar mediante el método de fuerza bruta, es decir, generando claves de cifrado aleatorias para que coincidan con el texto cifrado correcto.