Lenguaje C de criptografía para implementar los pasos centrales de AES
De acuerdo con el algoritmo AES, complete las operaciones de cuadro S, cambio de fila, mezcla de columnas y adición de claves redondas del algoritmo AES.
Estándar de cifrado avanzado (inglés: Estándar de cifrado avanzado, abreviatura: AES), también conocido como método de cifrado Rijndael en criptografía, es un estándar de cifrado de bloques adoptado por el gobierno federal de EE. UU. Este estándar reemplazó al DES original y ha sido ampliamente utilizado en todo el mundo después de un análisis exhaustivo. Después de cinco años de selección, el Instituto Nacional de Estándares y Tecnología (NIST) publicó el Estándar de cifrado avanzado (AES) en FIPS PUB 197 el 26 de noviembre de 2001 y se convirtió en el estándar actual el 26 de mayo de 2002. En años, AES ha convertirse en uno de los algoritmos de cifrado de claves simétricas más populares.
AES utiliza un sistema de cifrado de paquetes simétrico con soporte de longitud de clave mínima de 128, 192 y 256 y una longitud de paquete de 128 bits. El algoritmo debería ser fácil de implementar en una variedad de hardware y software.
La longitud del grupo de bloques de datos cifrado por AES debe ser de 128 bits y la longitud de la clave puede ser cualquiera de 128 bits, 192 bits o 256 bits (si las longitudes del bloque de datos y de la clave no son suficientes, se repondrán). El cifrado AES tiene múltiples rondas de repeticiones y transformaciones. Los pasos generales son los siguientes: 1. Expansión de clave, 2. Ronda inicial, 3. Rondas repetidas. Cada ronda incluye: reemplazo de bytes (SubBytes), cambio de fila (ShiftRows), mezcla de columnas (MixColumns), adición de clave de ronda (AddRoundKey). , 4. Adición de clave redonda (AddRoundKey)
La estructura general del cifrado del algoritmo AES
Reemplazo de bytes (SubBytes): use S-box para realizar un reemplazo no lineal, y S-box es un Matriz de 16 × 16, como se muestra en la Tabla 4-9. El reemplazo de bytes asigna cada byte de la matriz de estado de entrada a otro byte mediante una simple operación de tabla de búsqueda.
Los primeros 4 bits del byte de entrada especifican el. valor de fila del S-box, y los últimos 4 bits especifican el valor de la columna del S-box. Los elementos de fila y columna que determinan la posición del S-box se usarán como salida. Por ejemplo, si la palabra de entrada. Si la sección es "03", el valor de la fila es 0 y el valor de la columna es 3. Según la Tabla 4-9, el valor correspondiente en la fila 0 y la columna 3 es "7B", por lo que el byte de salida es "7B".
Ejemplo
En el ejemplo anterior, el primer elemento básico es "F5", que la caja del terminal S utilizará como fila "F", columna "5" en el ejemplo anterior. El primer elemento básico es "F5", que será reemplazado por el elemento "E6" en la fila "F" y la columna "5" del S-box, y el resto de la salida se determinará de la misma manera.
Las cuatro filas de la matriz de estado se rotan hacia la izquierda en bytes, y el desplazamiento de cada fila está determinado por el tamaño del grupo de texto sin formato y el número de filas en las que se encuentra (es decir, el número de columnas Nb y el número de filas)
Ejemplo
Ejemplo
La operación de adición de clave cíclica consiste en distinguir la clave del texto sin formato bit a bit, y el La clave cíclica se obtiene mediante expansión de clave
Con fips-192 (AES) mismo estándar.