Sé que esta pregunta es un poco viejo, pero recientemente he tenido a la investigación en mí como estoy implementando AES128 en un PIC16 y un 8051, y así que tenía curiosidad acerca de esta cuestión.
He usado algo como esto: http://cs.ucsb.edu/~koc/cs178/proyectos/JT/aes.c
y mi ram es el uso de un par de cientos de bytes y el tamaño del binario es de menos de 3 kb de ROM.
Mi mejor consejo es leer en la página de la Wikipedia http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation
y comprender los diferentes modos, por ejemplo, cómo AES en modo OFB sorta utiliza BCE modo como un bloque de construcción básico.
También el XOR ing (en OFB-modo) hace un simétrica de la operación, de manera de cifrar/descifrar es la misma función que también ahorra espacio.
Cuando entendí cómo AES realmente trabajado, yo podría implementar en C mediante la personalización de un pedazo de código que se encuentra en la web y, a continuación, pruebe contra el NIST especificación* * * (hay que hacer esto! cantidad de código que se encuentra en línea es defectuoso) y la práctica sólo lo que sea absolutamente necesario.
Yo era capaz de encajar AES128 en un 8051, junto con algunos otros RF firmware haciendo esta personalización y optimización. El uso de la memoria RAM (para todo el sistema) bajó de ~2.5 kb justo debajo de 2 kb, lo que significa que no tienes que actualizar a un 8051 con 4 kb de SRAM, pero podría seguir usando el más barato de 2 kb de SRAM versión.
** Prueba de Vectores están en el Apéndice F en: http://csrc.nist.gov/publications/nistpubs/800-38a/addendum-to-nist_sp800-38A.pdf
EDITAR:
Finalmente conseguí el código en Github: https://github.com/kokke/tiny-AES128-C
He optimizado un poco de tamaño. GCC tamaño de salida cuando compilado para ARM:
$ arm-none-eabi-gcc -O2 -c aes.c -o aes.o
$ size aes.o
text data bss dec hex filename
1024 0 204 1228 4cc aes.o
Por lo que el uso de los recursos es ahora un tamaño de 1 kb de código, 204 bytes de RAM.
No recuerdo cómo construir para el PIC, pero si la 8bit AVR de Atmel Mega16 es como la de la foto, el uso de los recursos es:
$ avr-gcc -Wall -Wextra -mmcu=atmega16 -O2 -c aes.c -o aes.o
$ avr-size aes.o
text data bss dec hex filename
1553 0 198 1751 6d7 aes.o
Así 1.5 K código y 198bytes RAM.