Я знаю, что этот вопрос немного устарел, но мне только недавно пришлось его исследовать, поскольку я внедряю AES128 на PIC16 и 8051, и поэтому мне тоже был интересен этот вопрос.
Я использовал что-то вроде этого: http://cs.ucsb.edu/~koc/cs178/projects/JT/aes.c,
и мое оперативное использование составляет пару сотен байт, а размер двоичного файла составляет менее 3 КБ ПЗУ.
Мой лучший совет - прочитать на странице Википедии http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation
и разобраться в различных режимах, например, как AES в режиме OFB сорта использует режим ECB в качестве основного строительного блока. Также XOR (в режиме OFB) делает его симметричной операцией, поэтому шифрование / дешифрование - это та же функция, которая также экономит место.
Когда я понял, как на самом деле работает AES, я смог реализовать его на C, а затем проверить его на соответствие спецификации NIST ** (сделайте это! Большая часть кода, найденного в Интернете, имеет недостатки) и реализовать только то, что мне абсолютно необходимо.
Благодаря этой настройке и оптимизации я смог установить AES128 на 8051 вместе с некоторыми другими радиочастотными прошивками. Использование ОЗУ (для всей системы) снизилось с ~ 2,5 КБ до чуть ниже 2 КБ, что означает, что нам не пришлось обновляться до 8051 с 4 КБ SRAM, но мы могли продолжать использовать более дешевую версию 2 КБ SRAM.
** Тестовые векторы находятся в Приложении F в: http://csrc.nist.gov/publications/nistpubs/800-38a/addendum-to-nist_sp800-38A.pdf
РЕДАКТИРОВАТЬ:
Наконец-то получил код на Github: https://github.com/kokke/tiny-AES-c
Я немного оптимизировал размер. Вывод размера GCC при компиляции для 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
Таким образом, использование ресурсов теперь составляет 1 КБ кода, 204 байта ОЗУ.
Я не помню, как собрать для PIC, но если 8-битный AVR Atmel Mega16 похож на PIC, использование ресурсов:
$ 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
Итак, 1.5K код и 198 байт оперативной памяти.