Tengo un próximo examen en el que puedo usar una calculadora simple. En algunas preguntas de muestra, nos piden que XOR dos valores (para la clave redonda AES) y sé cómo escribirlo a mano, pero hay alguna otra forma más rápida ya que el examen está cronometrado, por supuesto.
Respuesta
Si tiene suerte, la definición de «calculadora simple» puede incluir todas las calculadoras no gráficas. En ese caso, puede utilizar un Casio FX-115ES Plus, que incluye los modos base hexadecimal y octal, y tiene un operador XOR. Puede operar en grupos de octetos de hasta 32 bits.
Si no tiene tanta suerte, la tabla XOR es su mejor amiga. Dependiendo de la cantidad de cálculos que necesite realizar, puede ser más rápido crear uno en una hoja de borrador durante el examen. Es posible que incluso se le permita traer uno.
Tenía el requisito de una tabla XOR para realizar cálculos rápidos en un libro de códigos impreso para una comunicación criptográficamente fuerte a través de un canal de voz público. También tenía que hacerse rápidamente sin el uso de una computadora o cualquier dispositivo electrónico, y tenía que caber en una pequeña hoja de 4×6 en el espacio debajo del texto cifrado.
Se me ocurrieron varios métodos para condensar el mesa y aún tenerla utilizable. Si es inteligente e ingenioso, el conocimiento de cómo crear versiones condensadas puede permitirle realizar rápidamente muchos cálculos XOR. Hay un patrón recursivo en la tabla XOR hexadecimal que se puede explotar; la tabla anterior está codificada por colores para mostrar este patrón, que se extiende hasta los caracteres individuales. Estas son las tablas condensadas:
Si bien la tabla anterior ocupa menos espacio, tiene la misma cantidad de caracteres y, por lo tanto, su creación requiere aproximadamente la misma cantidad de tiempo. Se requiere una regla simple para seleccionar los caracteres correctos.
El siguiente nivel ocupa ahora tanto la mitad del espacio del anterior como la mitad de los caracteres. La regla es más compleja, pero unos minutos de práctica hacen que su uso sea casi tan rápido como la tabla completa. Incluso la regla se puede simplificar con XOR, el resultado será correcto si el XOR de las selecciones de regla es 1.
El nivel final es una vez más la mitad del espacio y la mitad de los caracteres (casi) que el anterior, mientras que requiere una regla adicional para hacer el trabajo. Si recuerda la estructura recursiva y el diseño básico de esta tabla, puede recrearla en menos de un minuto con un lápiz y papel.
Empiece con el encabezado de la columna interior, primer mordisco; 0 1 2 3 4 5 6 7
Luego agregue el segundo mordisco, que es el primer mordisco + 8; 8 9 ABCDEF
El encabezado de la columna externa es el encabezado de la columna interna con las mitades invertidas
El encabezado de la fila interna es la primera mitad del encabezado de la columna interna
El encabezado de la fila externa es la primera mitad de la columna externa encabezado
Luego, completa la tabla con la estructura recursiva, construida a partir del encabezado de la columna interna.
La creación de la tabla de doble compresión omite los encabezados externos pero usa un encabezado de fila completo.
Un solo ejemplo en la tabla triple:
25 XOR B6
2 XB = [2a] X [3b] (1 2 2) = 9
Como 2 es el primer nibble y B es el segundo, usamos el segundo nibble de [19]
5 X 6 = [5d] x [ 6e] (1 1 1) = 3
Como 5 es el primer nibble y 6 es el primero, usamos el primer nibble de [3b]
Por lo tanto, 25 XOR B6 = 93
Respuesta
Intente convertir números hexadecimales en números binarios y realice OR exclusivos en todos y cada uno de los bits. Luego convierta los números binarios de nuevo a números hexadecimales.
Comentarios
- Además, dado que 16 es exactamente 2 ^ 4, puede hacerlo en forma de dígitos. Es decir, no ' no tiene que convertir el número entero a binario a la vez, puede hacerlo un dígito a la vez, xor, luego convertir el resultado de nuevo a hexadecimal
Respuesta
Xoring 2 bits es fácil.
convertir un dígito hexadecimal en 4 bits es fácil.
La combinación de estos 2 hechos debería facilitar bastante la obtención de un solo dígito hexadecimal. Si escribe una tabla para cada dígito en binario (en una prueba cronometrada, si vale la pena o no depende del número de conversiones que tendrá que hacer), no tendrá que hacer ningún cálculo escrito. Por ejemplo, xor e y 3, es 1110 xor 0011 que es 1101 que es d. Si tiene una tabla lista, este cálculo es básicamente instantáneo.
Ahora repita esto para todos los dígitos. Esto se puede hacer en forma de dígitos ya que cada dígito hexadecimal remite exactamente 4 bits