Vamos a encriptar #2 - El cifrado de Vigenère
Hola de nuevo a todos, el día de hoya vamos a continuar con la celebración por las 10000 visitas que ha recibido el blog, y para ello vamos a ver un poco de lo que en un inicio fue la causa de abrir este blog.
Cómo recordaras, uno de los primeros fue: "¿Un acertijo, Por qué no?", el reto fue resuelto no hace mucho. La persona que logro descifrarlo ahora tiene su lugar en el salon de la fama. Para continuar con el tema de encriptacion, hoy vamos a ver uno de los métodos de cifrado más sencillo (y funcional) a mi gusto.
Cómo notarás, si le asignamos el valor de 1 a "A" 2 a "B" y asi sucesivamente hasta "Z" tendremos una numeracion que solo llega hasta 26.
En el alfabeto en español hay que tener en cuenta que hay una letra más. La letra "Ñ" que no siempre se toma en cuenta en el alfabeto inglés. Si numeramos otra vez pero tomando en cuenta la letra "Ñ" tendremos algo como lo que sigue:
Siempre será necesario saber el idioma original para hacer los ajustes necesarios pero para fines practicos, en todos los ejemplo que te encuentres en este blog, siempre se usará el alfabeto en español (A1Z27).
Una vez aclarado lo anterior, empecemos con lo que sería el método para encriptar usando el cifrado de Vigenere.
Supongamos que queremos enviar de forma el siguiente mesaje: HelloWorld. Siempre debemos de usar una contraseña para este caso voy a usar "USG" (pero puede ser cualquier frase/palabra).
Usando el método A1Z27 procedemos a asignar el valor a cada letra de la contraseña:
El resultado de aplicar el cifrado de Vigenere en la frase "HELLOWORLD" con la contraseña "USG" es:
Par desencriptar lo primero que vamos a hacer es restar el numero correspondiente a la letra de la contraseña al letra ya de la frase ya cifrada, al igual que en la anterior, se avanzará de una en una y a cada letra se le restará su valor, si la frase o la contraseña son mas largas, se repetira hasta completar la palabra más larga.
Cómo recordaras, uno de los primeros fue: "¿Un acertijo, Por qué no?", el reto fue resuelto no hace mucho. La persona que logro descifrarlo ahora tiene su lugar en el salon de la fama. Para continuar con el tema de encriptacion, hoy vamos a ver uno de los métodos de cifrado más sencillo (y funcional) a mi gusto.
El cifrado de Vigenere.
Para empezar, ¿que es el cifrado de Vigenere? Bien, se puede resumir de la siguiente manera:
El cifrado Vigenère es un cifrado basado en diferentes series de caracteres o letras del cifrado César formando estos caracteres una tabla, llamada tabla de Vigenère, que se usa como clave. El cifrado de Vigenère es un cifrado de sustitución simple polialfabético.
El cifrado Vigenère se ha reinventado muchas veces. El método original fue descrito por Giovan Battista Belasso en su libro de 1553 La cifra del Sig. Giovan Battista Belasso. Sin embargo, fue incorrectamente atribuido más tarde a Blaise de Vigenère, concretamente en el siglo XIX, y por ello aún se le conoce como el "cifrado Vigenère".
Wikipedia/Cifrado de Vigenere.
Cómo cifrar.
Antes que nada vamos a revisar un par de puntos importantes. Para empezar con el cifrado de Vigenere, debemos hacer uso del cifrado A1Z27. El cifrado A1Z27 consiste en asignar un valor numerico a cada letra del alfabeto, pero hay que recordar que; dependiendo del idioma; este tiene más o menos letras. Si se usa el alfabeto en inglés, tendriamos algo cómo lo siguienteA | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
Cómo notarás, si le asignamos el valor de 1 a "A" 2 a "B" y asi sucesivamente hasta "Z" tendremos una numeracion que solo llega hasta 26.
En el alfabeto en español hay que tener en cuenta que hay una letra más. La letra "Ñ" que no siempre se toma en cuenta en el alfabeto inglés. Si numeramos otra vez pero tomando en cuenta la letra "Ñ" tendremos algo como lo que sigue:
A | B | C | D | E | F | G | H | I | J | K | L | M | N | Ñ | O | P | Q | R | S | T | U | V | W | X | Y | Z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
Siempre será necesario saber el idioma original para hacer los ajustes necesarios pero para fines practicos, en todos los ejemplo que te encuentres en este blog, siempre se usará el alfabeto en español (A1Z27).
Una vez aclarado lo anterior, empecemos con lo que sería el método para encriptar usando el cifrado de Vigenere.
Supongamos que queremos enviar de forma el siguiente mesaje: HelloWorld. Siempre debemos de usar una contraseña para este caso voy a usar "USG" (pero puede ser cualquier frase/palabra).
Usando el método A1Z27 procedemos a asignar el valor a cada letra de la contraseña:
- U = 22.
- S = 20.
- G = 7.
- H = 8.
- E = 5.
- L = 12.
- L = 12.
- O = 16.
- W = 24.
- O = 16.
- R = 19.
- L = 12.
- D = 4.
- H + U (8 + 22 = 30)
- E + S (5 + 20 = 25)
- L + G (12 + 7 = 19)
- L + U (12 + 22 = 34)
- O + S (16 + 20 = 36)
- W + G (24 + 7 = 31)
- O + U (16 + 22 = 38)
- R + S (19 + 20 = 39)
- L + G (12 + 7 = 19)
- D + U (4 + 22 = 26)
El resultado de aplicar el cifrado de Vigenere en la frase "HELLOWORLD" con la contraseña "USG" es:
- 30 mod 27 = 3 = C
- 25 mod 27 = 25 = X
- 19 mod 27 = 19 = R
- 34 mod 27 = 7 = G
- 36 mod 27 = 9 = I
- 31 mod 27 = 4 = D
- 38 mod 27 = 11 = K
- 39 mod 27 = 12 = L
- 19 mod 27 = 19 = R
- 26 mod 27 = 26 = Y
Cómo descifrar.
Ahora viene una parte importante de todo el proceso, devolver a una forma legible una frase que este cifrada. Siempre será necesario saber la contraseña que se uso para cifrar la frase. utilizando el ejemplo anterior; la contraseña es: "USG".Par desencriptar lo primero que vamos a hacer es restar el numero correspondiente a la letra de la contraseña al letra ya de la frase ya cifrada, al igual que en la anterior, se avanzará de una en una y a cada letra se le restará su valor, si la frase o la contraseña son mas largas, se repetira hasta completar la palabra más larga.
- 3-22 = -19
- 25 - 20 = 5
- 19 - 7 = 12
- 7 - 22 = -15
- ...
- -19 + 27 = 8 = H
- 5 = 5 = E
- 12 = 12 = L
- -15 + 27 = 12 = L
- ...
Ahora sabiendo esto, no me queda nada más que decir:
gizgxvgñlbi USG
No hay comentarios.