मुझे पता है कि यह सवाल थोड़ा पुराना है, लेकिन मैंने अभी हाल ही में इसे खुद शोध किया है क्योंकि मैं एक PIC16 और 8051 पर AES128 को लागू कर रहा हूं, और इसलिए मैं इस प्रश्न के बारे में भी उत्सुक था।
मैंने कुछ इस तरह का उपयोग किया है: http://cs.ucsb.edu/~koc/cs178/projects/JT/aes.c
और मेरा RAM उपयोग एक सौ बाइट्स है और बाइनरी आकार 3kb ROM से कम है।
मेरी सबसे अच्छी सलाह यह है कि आप विकिपीडिया पृष्ठ http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation पर पढ़ें
और विभिन्न विधाओं को समझें, उदाहरण के लिए कि कैसे OFB मोड में AES बुनियादी भवन खंड की तरह ECB का उपयोग करता है। इसके अलावा XOR'ing (OFB- मोड में) यह एक सममित ऑपरेशन बनाता है, इसलिए एन्क्रिप्ट / डिक्रिप्ट वही फ़ंक्शन है जो अंतरिक्ष को भी बचाता है।
जब मुझे समझ में आया कि एईएस वास्तव में कैसे काम करता है, तो मैं इसे सी में लागू कर सकता हूं और फिर इसे एनआईएसटी विनिर्देश के खिलाफ परीक्षण कर सकता हूं ** (ऐसा करें! ऑनलाइन पाया गया बहुत कोड त्रुटिपूर्ण है) और केवल वही लागू करें जो मुझे बिल्कुल जरूरी था।
मैं यह अनुकूलन और अनुकूलन करके कुछ अन्य RF फर्मवेयर के साथ 8051 में AES128 को फिट करने में सक्षम था। RAM का उपयोग (पूरे सिस्टम के लिए) ~ 2.5kb से नीचे 2kb से नीचे चला गया, जिसका अर्थ है कि हमें 4kb SRAM के साथ 8051 में अपग्रेड नहीं करना था, लेकिन सस्ता 2kb SRAM संस्करण का उपयोग करना जारी रख सकते थे।
** परीक्षण क्षेत्र परिशिष्ट F में हैं: http://csrc.nist.gov/publications/nistpubs/800-38a/addendum-to-nist_sp800-38A.pdf
संपादित करें:
अंत में Github पर कोड मिला: https://github.com/kokke/tiny-AES-c
मैंने आकार के लिए थोड़ा अनुकूलित किया है। एआरएम के लिए संकलित होने पर जीसीसी आकार का उत्पादन:
$ 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
इसलिए संसाधन उपयोग अब 1KB कोड, 204 बाइट्स रैम है।
मुझे याद नहीं है कि PIC के लिए कैसे निर्माण किया जाए, लेकिन अगर 8bit 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 कोड और 198bytes RAM।