miércoles, 26 de junio de 2013

One Time Pad 

 One Time Pad es un algoritmo de cifrado que se basa en llaves aleatorias y nunca reutilizadas, la intención de no reutilizar las llaves mas de una ves es para incrementar la dificultad cripto analítica.

El uso a grandes rasgos es de la siguiente manera, se mantienen dos archivos de llaves, cada vez que se encripte o desencripte algún mensaje se eliminara las llaves utilizadas, por lo cual el uso de estos archivos debe ser exclusivo entre una comunicación entre los poseedores de los archivos de llaves.

A continuacion muesto el metodo de encriptacion y desencriptacion.

Si deseas ver el código completo clic aqui

Ejemplo de ejecución:


Referencias: 


Python Number abs() Method

Problemas:

  • Si el archivo de llaves no existe cuando se quiere encriptar o desencriptar, marcara error y finalizara el programa, en el método para leer archivo tendría que poner un try - except para mandar a la generación o avisar que no existe el archivo.
  • Si se agregar caracteres diferentes a el abecedarios y los números provocara un error al no encontrarlo, la solucion mas fácil es expandir las opciones del diccionario para que incluya los caracteres. (Ejemplo: Jose? o José, cometen error por el acento y por el signo de interrogacion que no estan incluidos).
  • Si las llaves no son suficientes para encriptar el texto marcara error, debo validar que el texto no supere la cantidad de llaves existentes en el archivo y avisarle al usuario en caso contrario.