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.