আমি জানি এই প্রশ্নটি কিছুটা পুরনো, তবে আমি সম্প্রতি সম্প্রতি নিজেই এটি নিয়ে গবেষণা করেছিলাম কারণ আমি পিসিক 16 এবং 8051-এ AES128 বাস্তবায়ন করছি, এবং তাই আমি এই প্রশ্নটি সম্পর্কেও আগ্রহী ছিলাম was
আমি এর মতো কিছু ব্যবহার করেছি: http://cs.ucsb.edu/~koc/cs178/projects/JT/aes.c
এবং আমার ম্যামের ব্যবহার কয়েকশো বাইট এবং বাইনারি আকারটি 3 কেবি রমের চেয়ে কম।
আমার সেরা পরামর্শটি উইকিপিডিয়া পৃষ্ঠায় http://en.wikedia.org/wiki/Block_cipher_modes_of_operation পড়ার
জন্য এবং বিভিন্ন মোডগুলি বোঝার জন্য, উদাহরণস্বরূপ, OFB মোড সাজানোর ক্ষেত্রে AES কীভাবে ইসিবি মোডটিকে বেসিক বিল্ডিং ব্লক হিসাবে ব্যবহার করে। এছাড়াও XOR'ing (OFB- মোডে) এটি একটি প্রতিসম ক্রিয়াকলাপ করে তোলে, সুতরাং এনক্রিপ্ট / ডিক্রিপ্ট একই ফাংশন যা স্থান সংরক্ষণ করে।
যখন আমি বুঝতে পেরেছিলাম যে এএসএস কীভাবে কাজ করে, আমি সিটিতে এটি প্রয়োগ করতে পারি এবং তারপরে এটি এনআইএসটি স্পেসিফিকেশন ** (এটি কর! অনলাইনে পাওয়া অনেক কোড ত্রুটিযুক্ত) এর বিপরীতে পরীক্ষা করতে পারে এবং কেবলমাত্র আমার যা প্রয়োজন তা কেবল প্রয়োগ করি needed
আমি এই কাস্টমাইজেশন এবং অপ্টিমাইজেশন করে কিছু অন্যান্য আরএফ ফার্মওয়্যারের পাশাপাশি 8051 তে AES128 ফিট করতে সক্ষম হয়েছি। র্যামের ব্যবহার (পুরো সিস্টেমের জন্য) 2.5 কেবিবি থেকে নীচে 2 কেবিতে নেমে গেছে, এর অর্থ আমাদের 4kb এসআরএএম দিয়ে 8051 এ উন্নীত করতে হবে না, তবে সস্তা 2kb এসআরএএম সংস্করণটি ব্যবহার করা যেতে পারে।
** পরীক্ষার ভেক্টরগুলি পরিশিষ্ট এফ এ রয়েছে: http://csrc.nist.gov/publications/nistpubs/800-38a/addendum-to-nist_sp800-38A.pdf
সম্পাদনা করুন:
অবশেষে গিথুবে কোডটি পেয়েছে: 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 বাইট র্যাম।
পিআইসির জন্য কীভাবে তৈরি করবেন তা আমি মনে করি না তবে 8 বিট এভিআর আটমেল মেগা 16 যদি পিকের মতো কিছু হয় তবে উত্সের ব্যবহারটি হ'ল:
$ 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.5 কে কোড এবং 198bytes র্যাম।