Pseudocódigo[editar]
Expansión de la clave usando el esquema de claves de Rijndael.
Etapa inicial:
AddRoundKey
Rondas:
SubBytes — en este paso se realiza una sustitución no lineal donde cada byte es reemplazado con otro de acuerdo a una tabla de búsqueda.
ShiftRows — en este paso se realiza una transposición donde cada fila del «state» es rotada de manera cíclica un número determinado de veces.
MixColumns — operación de mezclado que opera en las columnas del «state», combinando los cuatro bytes en cada columna usando una transformación lineal.
AddRoundKey — cada byte del «state» es combinado con la clave «round»; cada clave «round» se deriva de la clave de cifrado usando una iteración de la clave.
Etapa final:
SubBytes
ShiftRows
AddRoundKey
Etapa SubBytes- Substitución de bits[editar]
En la etapa SubBytes, cada byte en la matriz es actualizado usando la caja-S de Rijndael de 8 bits. Esta operación provee la no linealidad en el cifrado. La caja-S utilizada proviene de la función inversa alrededor del GF(28), conocido por tener grandes propiedades de no linealidad. Para evitar ataques basados en simples propiedades algebraicas, la caja-S se construye por la combinación de la función inversa con una transformación afín inversible. La caja-S también se elige para evitar puntos estables (y es por lo tanto un derangement), y también cualesquiera puntos estables opuestos.
La caja-S es descrita en mayor profundidad en el artículo caja-S de Rijndael.
Etapa ShiftRows-Desplazar filas[editar]
El paso ShiftRows opera en las filas del state; rota de manera cíclica los bytes en cada fila por un determinado offset. En AES, la primera fila queda en la misma posición. Cada byte de la segunda fila es rotado una posición a la izquierda. De manera similar, la tercera y cuarta filas son rotadas por los offsets de dos y tres respectivamente. De esta manera, cada columna del state resultante del paso ShiftRows está compuesta por bytes de cada columna del state inicial. (variantes de Rijndael con mayor tamaño de bloque tienen offsets distintos).
Etapa MixColumns- Mezclar columnas[editar]
En el paso MixColumns, los cuatro bytes de cada columna del state se combinan usando una transformación lineal inversible. La función MixColumns toma cuatro bytes como entrada y devuelve cuatro bytes, donde cada byte de entrada influye todas las salidas de cuatro bytes. Junto con ShiftRows, MixColumns implica difusión en el cifrado. Cada columna se trata como un polinomio GF(28) y luego se multiplica el módulo con un polinomio fijo . El paso MixColumns puede verse como una multiplicación matricial en el campo finito de Rijndael.
Etapa AddRoundKey- Cálculo de las subclaves[editar]
En el paso AddRoundKey, la subclave se combina con el state. En cada ronda se obtiene una subclave de la clave principal, usando la iteración de la clave; cada subclave es del mismo tamaño que el state. La subclave se agrega combinando cada byte del state con el correspondiente byte de la subclave usando XOR.
Optimización del cifrado[editar]
En sistemas de 32 bits o de mayor tamaño de palabra, es posible acelerar la ejecución de este algoritmo mediante la conversión de las transformaciones SubBytes, ShiftRows y MixColumn en tablas. Se tienen cuatro tablas de 256 entradas de 32 bits que utilizan un total de 4 kilobytes (4096 bytes) de memoria, un Kb cada tabla. De esta manera, una ronda del algoritmo consiste en 16 búsquedas en una tabla seguida de 16 operaciones XOR de 32 bits en el paso AddRoundKey. Si el tamaño de 4 kilobytes de la tabla es demasiado grande para una plataforma determinada, la operación de búsqueda en la tabla se puede realizar mediante una sola tabla de 256 entradas de 32 bits mediante el uso de rotaciones circulares.
mas o menos para que veas el nivel de estos cifradores...
http://es.wikipedia.org/wiki/Advanced_Encryption_StandardAqui una explicacion en ingles con un cifrador implantado en js con un output detallado...
http://people.eku.edu/styere/Encrypt/JS-AES.htmlnada más te deja escoger 5 claves diferentes por
I have decided to not allow the key to changed to reduce the chance of this page being used to solve homework problems