Desafío Primes Crypto

Los números primos son usados en criptografía de varias maneras, pero principalmente para generar claves.

Hay una forma de codificar bien ingeniosa, que no se usa mucho pues sólo permite operar con mensajes muy cortos y requiere mucho esfuerzo de computación. Se las voy a describir a continuación.

Lo primero es definir nuestro alfabeto, para efectos de este desafío definiremos el alfabeto como las letras minúsculas del alfabeto inglés, esto es un conjunto de 26 caracteres:

"abcdefghijklmnopqrstuvwxyz"

A cada letra se le asigna un valor numérico. A la letra a le asignaremos el valor 1, a la b el valor 2 y así sucesivamente.

a 1
b 2
c 3
d 4
e 5
f 6
g 7
...

También definiremos que nuestros mensajes tendrán un largo máximo de 10 caracteres.

Usaremos como clave los primeros 10 números primos:

2, 3, 5,  7,  11,  13,  17,   19,  23,  29

Para encriptar elevamos el número primo en la posición de cada letra al valor de la letra y luego multiplicamos todos los valores.

Ejemplos:

"hola" = 2^8 * 3^15 * 5^12 * 7^1 = 6277646812500000000

"abc" = 2^1 * 3^2 * 5^3 = 2250

Acá el operador ^ es el operador potencia, así 2^8 corresponde a 2 elevado a 8.

Usando esta técnica he cifrado 5 palabras que deben descubrir.

Los valores cifrados de estas cinco palabras son:

40233680140239064308212773133312764943748000000000000000000

45087592346382488832366326449069283133412065695070241853706487031250000

8679608265978819446726615827418826755071534791227586000000000000000

27914797455418138364383974433340682351379394531250000

1059246326897806934956526951511712774422030066044771506277207862450866815727414664067933302815246198122035444843750

Valores que también pueden encontrar en este archivo: https://github.com/lnds/desafios-programando.org/blob/master/2019-12-15/ciphers.txt

Deben dejar la respuesta y el código o descripción de la técnica que usaron para descubrir las palabras en los comentarios.

Si participan más de 10 habrá un regalo en el ganador.

¿Te gustó?

Puedes auspiciar este blog en Patreon:   Become a Patron! Con tu apoyo puedo mantener esta plataforma activa y generar más contenido.


comments powered by Disqus