El DES se especifica en FIPS 46-3 , que es más bien un antiguo estándar que usa una numeración poco común de bits dentro de bytes. Es decir, comienzan en 1 y cuentan los bits de izquierda a derecha.
Entonces, en la siguiente secuencia de bytes:
00 00 00 80 00 00 00 02
El primer byte es los bits 1 a 8, el segundo byte es los bits 9 a 16, el tercer byte es los bits 17 a 24, el cuarto byte (el que tiene el valor 80
) es el bit 25 a 32, y así sucesivamente. Si considera que 80
está escrito en binario 10000000
, y que estos bits están numerados de 25 a 32 de izquierda a derecha, entonces el bit 25 tiene el valor 1. Del mismo modo, el último byte ( 02
) contiene bits 57 a 64; el bit 63 tiene valor 1.
La "solución" en el documento al que se vincula contiene la oración:
Dada la entrada hexadecimal, cuando la expandimos a binario, encontramos que solo el bit 64 y el bit 25 son 1s y los otros bits son 0s.
que es incorrecto, y probablemente un error tipográfico. Debe leer "solo el bit 63 y el bit 25 son 1s".
La "permutación inicial" se especifica en la página 10 de FIPS 46-3; enumera los bits de la salida de la permutación, y dice de dónde vienen (esta es una tabla "proviene de", no una tabla "va a"). El bit de entrada 25 va al bit de salida 37 (el valor "25" es el número 37 en la tabla), mientras que el bit de entrada 63 va al bit de salida 57. Esto debería producir:
00 00 00 00 08 00 00 80
que no es en absoluto lo que el documento enumera como "solución". De hecho, la solución habla de la "permutación final" (mientras que la pregunta era acerca de la "permutación inicial"). Si suponemos que la pregunta también tiene un error tipográfico (el autor escribió "inicial" pero pensó "final"), entonces podemos probar la permutación final, cuya tabla también se encuentra en la página 10 de FIPS 46- 3. En esa tabla, el bit 25 de la entrada va al bit 64 de la salida (el número "25" aparece como el 64, es decir, el último elemento de la tabla de IP -1 ), mientras que el bit 63 de la entrada va al bit 15 de la salida (el número "63" aparece como el elemento 15 en la tabla). En ese caso, esto daría este resultado:
00 02 00 00 00 00 00 01
que es lo que la "solución" da como respuesta correcta.
Resumen: el documento contiene dos errores:
- En la pregunta, dice "permutación inicial", pero debería ser "permutación final".
- En la solución, dice "bit 64 y 25", pero debería ser "bit 63 y 25".
Con estas dos correcciones, la pregunta y la solución ahora coinciden.
No he analizado las otras preguntas / soluciones, pero dos errores de este tipo en la primera pregunta arrojan una mala opinión sobre la calidad del documento.