Aplicación práctica. Encriptación y desencriptación de mensajes

 

Encriptación


¿Cómo podemos emplear los métodos de resolución de ecuaciones no lineales para encriptar un mensaje? Se debe seguir un procedimiento muy sencillo. 

Antes de empezar, necesitamos dos cosas:

  • Frase que queramos encriptar. En nuestro caso, vamos a codificar: ‘Este trabajo es de 10!’. 

  • Ecuación no lineal a nuestra elección, en la cual aplicaremos un método de resolución, por ejemplo podemos usar la ecuación f(x) = 3,5x^3 + xe^x.

Para encriptar un mensaje comenzamos asignando a cada carácter de nuestra expresión su valor correspondiente en código ASCII fijándonos en la siguiente tabla.

Carácter

Código ASCII

Carácter

Código ASCII

E

69

(espacio)

32

s

115

e

101

t

116

s

115

e

101

(espacio)

32

(espacio)

32

d

100

t

116

e

101

r

114

(espacio)

32

a

97

1

49

b

98

0

48

a

97

!

33

j

106



o

111




Una vez obtenidos todos los valores en ASCII de los caracteres de nuestra frase, el próximo paso es igualar la función no lineal seleccionada a cada código ASCII. Así conseguimos una función de encriptación diferente por cada carácter. Para poder aplicar luego el método de resolución, la función debe estar igualada a cero por lo que pasamos restando el valor ASCII.

Vamos a ver cómo se haría para el primer carácter, ‘E’, que tiene de valor ASCII, 69


3,5x^3 + xe^x = 69

3,5x^3 + xe^x - 69 = 0

f(x) = 3,5x^3 + xe^x - 69


Repetimos este paso para cada carácter de nuestro mensaje y tras haber desarrollado todas las funciones de encriptación necesarias, podemos aplicar cualquier método de resolución de ecuaciones no lineales en cada una de dichas funciones. De esta manera, obtendremos una raíz real para cada carácter y tomaremos esta raíz como el valor encriptado del carácter. Una vez hecho este procedimiento, ya tendremos el mensaje encriptado. 

Para explicar este desarrollo sólo vamos a analizar detenidamente la encriptación del carácter ‘E’. Hemos decidido emplear el método de resolución de Newton-Raphson para buscar la raíz de f(x). Newton-Raphson de f(x) tiene como función 


g(x) = x - f(x) / f'(x) = x - (3,5x^3 + xe^x - 69) / (10,5x^2 + e^x + xe^x)


Si seleccionamos como semilla p0 = 2 obtenemos las siguientes iteraciones


Iteraciones

Newton-Raphson

p0

2

p1

2,408649602

p2

2,340942454

p3

2,338512663

p4

2,338509641

p5

2,338509641

p6

2,338509641

p7

2,338509641

p8

2,338509641

p9

2,338509641

p10

2,338509641

p11

2,338509641

p12

2,338509641

p13

2,338509641

p14

2,338509641

p15

2,338509641


Observamos que el método de Newton-Raphson converge a la raíz x0 = 2,338509641 en la cuarta iteración para la función f(x) y empleando la semilla p0 = 2. Por lo tanto, podemos concluir que el carácter ‘E’ encriptado es 2,338509641 utilizando la función f(x) = 3,5x^3 + xe^x

Repetimos el mismo proceso para el resto de caracteres y obtendremos los siguientes resultados


Carácter

Encriptado

Carácter

Encriptado

E

2,338509641

(espacio)

1,81359902

s

2,744143669

e

2,636822831

t

2,751402009

s

2,744143669

e

2,636822831

(espacio)

1,81359902

(espacio)

1,81359902

d

2,628713887

t

2,751402009

e

2,636822831

r

2,736834552

(espacio)

1,81359902

a

2,603996247

1

2,092113046

b

2,612301718

0

2,077921659

a

2,603996247

!

1,832690206

j

2,676438477



o

2,714594848




Finalmente, nuestro mensaje encriptado (utilizando el símbolo ‘|’ para mostrar la separación de cada carácter) sería


2,338509641|2,744143669|2,751402009|2,636822831|1,81359902|2,751402009|2,736834552|2,603996247|2,612301718|2,603996247|2,676438477|2,714594848|1,81359902|2,636822831|2,744143669|1,81359902|2,092113046|2,077921659|1,832690206.


Desencriptación


El proceso de encriptar ha sido largo pero sencillo. Desencriptar un mensaje es igual de sencillo y, además, es mucho más rápido.


Para desencriptar un código, necesitamos dos cosas:


  • Mensaje encriptado. En este caso emplearemos el texto que hemos encriptado anteriormente. De esta manera demostramos que, efectivamente, se puede encriptar y desencriptar correctamente un mensaje empleando métodos numéricos. Por lo tanto, el mensaje a desencriptar será 


2,338509641|2,744143669|2,751402009|2,636822831|1,81359902|2,751402009|2,736834552|2,603996247|2,612301718|2,603996247|2,676438477|2,714594848|1,81359902|2,636822831|2,744143669|1,81359902|2,092113046|2,077921659|1,832690206.


  • Ecuación no lineal (la misma con la que se ha encriptado el mensaje). Como para encriptar la frase hemos empleado f(x) = 3,5x^3 + xe^x, para desencriptar vamos a emplear la misma expresión. Por lo tanto, podemos decir que la ecuación no lineal es la clave de la que ya hemos hablado anteriormente en el documento.


El primer paso a seguir para decodificar un texto, es introducir el valor encriptado a nuestra ecuación no lineal. Veamos qué resultado obtenemos para el primer carácter encriptado


f(2,338509641) = 3,5(2,338509641)^3 + 2,338509641e^(2,338509641) = 69


Este resultado debe ser un número entero (si no te da número entero, redondea) y corresponde con el valor ASCII del carácter que se ha encriptado. Si nos fijamos en la tabla de códigos ASCII que empleamos para codificar el mensaje, el valor ASCII 69 corresponde al carácter ‘E’. Ya hemos decodificado el primer carácter de nuestro código, y repitiendo este proceso para el resto de números, obtendremos el mensaje desencriptado


Encriptado

Código ASCII

Carácter

Encriptado

Código ASCII

Carácter

2,338509641

69

E

1,81359902

32

(espacio)

2,744143669

115

s

2,636822831

101

e

2,751402009

116

t

2,744143669

115

s

2,636822831

101

e

1,81359902

32

(espacio)

1,81359902

32

(espacio)

2,628713887

100

d

2,751402009

116

t

2,636822831

101

e

2,736834552

114

r

1,81359902

32

(espacio)

2,603996247

97

a

2,092113046

49

1

2,612301718

98

b

2,077921659

48

0

2,603996247

97

a

1,832690206

33

!

2,676438477

106

j




2,714594848

111

o





El mensaje desencriptado sería ‘Este trabajo es de 10!’ que, evidentemente, es el mismo mensaje que codificamos al principio de este apartado. 

Por lo tanto, podemos concluir que este método de encriptación y desencriptación funciona correctamente. La única desventaja es que se trata de un proceso muy largo si se hace manualmente.


SIGUIENTE