23 de marzo de 2015

Encriptación

Supongamos que tenemos una matriz invertible A (la matriz de codificación) y un texto que queremos cifrar.

Transformamos el texto a una secuencia de números, dando a cada carácter un valor numérico único; a continuación, formamos una matriz mediante la agrupación de los números en columnas de acuerdo al orden de la matriz A (la cantidad de elementos en cada columna debe ser igual al orden de la matriz). Llamemos a esta matriz B (la matriz plana). Multipliquemos la matriz A por la matriz B:

C = A•B
La matriz C es la matriz cifrada.

Para descifrar el mensaje, sólo debe multiplicarse (A)-1•C, donde (A)-1 es la matriz inversa de A.

Nótese que:

(A)-1•C = (A)-1•A•B = I•B = B
El texto plano original se puede hallar nuevamente tomando la matriz resultante y uniendo sus vectores columna, de manera que formen una secuencia, para luego convertir los números en los caracteres respectivos.

En muchos artículos, los autores utilizan solamente las 26 letras del alfabeto Inglés, a veces 29 si se incluye el espacio, el signo de interrogación y el punto. En estos casos una sencilla asignación de las letras y símbolos adicionales a los primeros números enteros, y el uso de la aritmética modular, permite con el uso de este método, obtener un mensaje cifrado compuesto por los mismos números enteros, que se pueden asignar nuevamente a sus correspondientes letras y símbolos.

En este post no vamos a hacer ninguna consideración sobre cuales letras o símbolos se pueden utilizar, de esta manera cualquier texto, sin importar idiomas o símbolos, se pueden cifrar utilizando este método. Para transformar caracteres en números, vamos a utilizar el valor Unicode del carácter.


La matriz cifrada C, se puede mostrar como una secuencia de números, uniendo sus vectores columna, de la misma manera que hay que hacer para obtener el texto plano original; pero no se pueden convertir los números a letras utilizando el método anterior, debido a que los números resultantes pueden oscilar en un conjunto numérico más amplio. Si lo prefiere, se puede transformar en un texto asociando los dígitos, el signo de menos y el separador de listas a diferentes caracteres. Es este ejemplo utilizamos sencillas funciones de mapeo para hacer eso.

No hay comentarios:

Publicar un comentario