jueves, 22 de enero de 2015

Librería de encriptación en Python

En esta entrada quisiera compartir con vosotros una librería en Python que he desarrollado para encriptar y desencriptar vuestros datos, pudiéndola adaptar a vuestras necesidades. Esta librería la podéis descargar desde el siguiente enlace: https://drive.google.com/file/d/0B1-JQdWrVRabY1FDTEdvcG5CSWM/view?usp=sharing

Al final del código tenéis comentados diferentes bloques de código para poder probar la librería.

A continuación os explico, en términos generales, para qué sirve cada parte del código.

CODEBASE (Código base)

El código base contiene un juego de 140 caracteres (sin repetir). Este juego de caracteres debe ser el mismo utilizado en los textos que se desean encriptar. El juego que he preparado contiene la inmensa mayoría de caracteres utilizados en el idioma español.

MATRIX (Matriz de códigos)

La matriz es un array de códigos, mediante el cual se realiza la trasposición de caracteres para la encriptación y desencriptación de las datos.

Esta librería ya viene con una matriz predeterminada, pero se puede generar una nueva matriz mediante la función create_random_matrix().

La matriz contiene tantos elementos o filas como número de caracteres tiene el código base. Cada uno de estos elementos o filas es una cadena de texto con los mismos caracteres que el código base, pero dispuestos de forma aleatoria. Para obtener una de estas filas, create_random_matrix() utiliza internamente la función get_random_line().

ENCRIPTAR

Para encriptar un dato, se utiliza la función encrypt(), a la cual se le pasan dos parámetros de tipo string: la cadena de texto a encriptar, y la clave utilizada para encriptar.

Internamente, el proceso de encriptar posee dos pasos que realiza automáticamente la función encrypt(): encriptar (filtro 1) y codificar (filtro 2).

El proceso de encriptar lo lleva a cabo la función code(), la cual realiza la trasposición de caracteres de la cadena de texto a través de la clave, y utilizando la matriz de códigos. El resultado es un galimatías que utiliza los caracteres del código base.

El proceso de codificar lo lleva a cabo la función code_hex(), la cual transforma la cadena encriptada en una secuencia hexadecimal.

El resultado final de la encriptación es una cadena en hexadecimal que contiene, exactamente, el doble de caracteres que la cadena original.

DESENCRIPTAR

Para desencriptar el dato encriptado, se utiliza la función decrypt(), a la cual se le pasan dos parámetros de tipo string: la cadena de texto encriptada, y la clave utilizada para encriptar.

El proceso de desencriptar posee dos pasos que realiza automáticamente la función decrypt: decodificar (filtro 1) y desencriptar (filtro 2).

El paso de decodificar lo lleva a cabo la función decode_hex(), la cual transforma la cadena en hexadecimal en una cadena de texto encriptada, la cual es un galimatías que utiliza los caracteres del código base.

El paso de desencriptar lo lleva a cabo la función decode(), la cual transforma la cadena de texto encriptada en el texto original. Esto lo realiza mediante la clave y la matriz de códigos, realizando el proceso de trasposición inverso al que se utilizó para la encriptación.

El resultado final de la desencriptación será la cadena de texto original, la cual contiene, exactamente, la mitad de caracteres que la cadena encriptada.