Python3 - Des/encriptar




Hola a todos.

Bueno tenia un tiempo libre y pues a raíz de que un usuario había "echo un nuevo método de codificación (encriptación)" se me ocurrió hacer uno, pero como no soy tan bueno programando (como para inventar una operación matemática furtiva para la encriptación) me las ingenie y salio el siguiente resultado:

Me base en la tabla ASCII pero intentar encriptar algo con eso es súper fácil. Así que intente hacer que sea un poco mas difícil poder entender el texto cifrado.




Ahora el Script

Código: 
import random

def cifra(mensaje):
 mensaje = mensaje
 for code in mensaje:
  codigo = ord(code)
  for i in code:
   while(True):
    a = random.randrange(0,255)
    b = random.randrange(0,255)
    c = a * b
    if(c == codigo):
     print(a,b, end="z")
     break

Lo que hace el script que cifra el texto es obtener el código (ascii) del carácter y mediante la función random obtener números aleatorios uno A y otro B que al multiplicarlos de el codigo de dicho caracter. Una vez que lo consigue lo imprime en pantalla (el caracter z es solo para darle mas estilo  ::) :o )




Estadisticas y defecto del script




El único defecto que podría mencionar es el consumo excesivo de memoria (todo gracias a la función random. Algo que podría decirse que tiene a favor es que por mas que sea el mismo texto a cifrar el resultado seria diferente ya que la función random se encargaría de encontrar diferentes múltiplos para el código del carácter.




Estadisticas del documento (texto a cifrar)







Consumo de memoria







Tiempo de ejecución del script






Metodo para conseguir el texto original

Código:
def descifra(mensaje):
 mensaje = mensaje
 lista = []
 for i in mensaje.split('z'):
  for x in i.split(' '):
   lista.append(x)
 it = iter(lista) 
 for x, y in zip(it, it): 
  print(chr(int(x) * int(y)), end='')


Eso es todo en esta oportunidad, espero sea de utilidad (no se si servirá), que sirva para aprender algo nuevo a quienes inician y pues no se que mas decir. Saludos

PD_ espero poder mejorarlo en algún tiempo que tenga libre.

Comentarios