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.