En el post anterior puse un ejemplo de cifrado utilizando el algoritmo DES y decía que en éste, para ver si lo he comprendido y he hecho correctamente, voy a descifrar el criptograma que obtuve.
De forma análoga que en el cifrado, como paso previo al descifrado debemos obtener, a partir de la clave (K), de 64 bits, las 16 subclaves (Ki), de 48 bits cada una, que se emplearán en las 16 rondas de la red de Feistel de las que consta este algoritmo, una subclave por ronda.
Ya expliqué en un post anterior como hacerlo, siendo la clave de nuestro ejemplo y las subclaves calculadas a partir de ésta las siguientes:
Y ya estamos en disposición de descifrar el criptograma, para lo que hay que recordar que en este post decía que basta con aplicar las sucbclaves (Ki) en orden inverso que en el cifrado. En nuestro ejemplo el criptograma obtenido es el siguiente:
- En binario:
C = 1001101111111011111110111111010011010000111110010001011000000100
- En hexadecimal:
C = 9BFBFBF4D0F91604
1.- Permutación inicial (IP) de los bits del bloque del criptograma a descifrar:
2.- Red de Feistel de 16 rondas (aplicando las subclaves en el orden inverso al cifrado):
2.1.- Primera iteración:
2.2.- Segunda iteración:
2.3.- Tercera iteración:
2.4.- Cuarta iteración:
2.5.- Quinta iteración:
2.6.- Sexta iteración:
2.7.- Séptima iteración:
2.8.- Octava iteración:
2.9.- Novena iteración:
2.10.- Décima iteración:
2.11.- Undécima iteración:
2.12.- Duodécima iteración:
2.13.- Decimotercera iteración:
2.14.- Decimocuarta iteración:
2.15.- Decimoquinta iteración:
2.16.- Decimosexta iteración:
3.- Permutación final (IP-1) de los bits de la concatenación R16 || L16:
Con lo que el texto en claro (M) sería:
- En binario:
M = 0100010101001010010001010100110101010000010011000100111101001101
- En hexadecimal:
M = 454A454D504C4F4D
Como se observa, he obtenido el mismo texto en claro (M) que en el post anterior, por lo que concluyo que tanto el cifrado como el descifrado son correctos.
De forma análoga que en el cifrado, como paso previo al descifrado debemos obtener, a partir de la clave (K), de 64 bits, las 16 subclaves (Ki), de 48 bits cada una, que se emplearán en las 16 rondas de la red de Feistel de las que consta este algoritmo, una subclave por ronda.
Ya expliqué en un post anterior como hacerlo, siendo la clave de nuestro ejemplo y las subclaves calculadas a partir de ésta las siguientes:
Y ya estamos en disposición de descifrar el criptograma, para lo que hay que recordar que en este post decía que basta con aplicar las sucbclaves (Ki) en orden inverso que en el cifrado. En nuestro ejemplo el criptograma obtenido es el siguiente:
- En binario:
C = 1001101111111011111110111111010011010000111110010001011000000100
- En hexadecimal:
C = 9BFBFBF4D0F91604
1.- Permutación inicial (IP) de los bits del bloque del criptograma a descifrar:
2.- Red de Feistel de 16 rondas (aplicando las subclaves en el orden inverso al cifrado):
2.1.- Primera iteración:
2.2.- Segunda iteración:
2.3.- Tercera iteración:
2.4.- Cuarta iteración:
2.5.- Quinta iteración:
2.6.- Sexta iteración:
2.7.- Séptima iteración:
2.8.- Octava iteración:
2.9.- Novena iteración:
2.10.- Décima iteración:
2.11.- Undécima iteración:
2.12.- Duodécima iteración:
2.13.- Decimotercera iteración:
2.14.- Decimocuarta iteración:
2.15.- Decimoquinta iteración:
2.16.- Decimosexta iteración:
3.- Permutación final (IP-1) de los bits de la concatenación R16 || L16:
- En binario:
M = 0100010101001010010001010100110101010000010011000100111101001101
- En hexadecimal:
M = 454A454D504C4F4D
Como se observa, he obtenido el mismo texto en claro (M) que en el post anterior, por lo que concluyo que tanto el cifrado como el descifrado son correctos.
Comentarios
Publicar un comentario