Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
tiny-AES-c — Small portable AES128/192/256 in C | Kitploit
أدوات/GitHubGitHub/kokke/tiny-aes-c
Embedded Systems SecurityEncryption/Decryption ToolsCryptography
GitHubkokke/tiny-aes-c

tiny-AES-c

Small portable AES128/192/256 in C

عرض المستودع
5.0k1.4kمنذ سنة واحدةتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CI

Tiny AES بلغة C

هذا تنفيذ صغير ومحمول لخوارزميات التشفير AES ECB وCTR وCBC المكتوبة بلغة C.

يمكنك تجاوز حجم المفتاح الافتراضي البالغ 128 بت باستخدام 192 أو 256 بت عن طريق تعريف الرمزين AES192 أو AES256 في aes.h.

واجهة البرمجة (API) بسيطة جدًا وتبدو هكذا (أستخدم أنواعًا مُعلَّقة بأسلوب C99 <stdint.h>):

root@kitploit:~
/* Initialize context calling one of: */
void AES_init_ctx(struct AES_ctx* ctx, const uint8_t* key);
void AES_init_ctx_iv(struct AES_ctx* ctx, const uint8_t* key, const uint8_t* iv);

/* ... or reset IV at random point: */
void AES_ctx_set_iv(struct AES_ctx* ctx, const uint8_t* iv);

/* Then start encrypting and decrypting with the functions below: */
void AES_ECB_encrypt(const struct AES_ctx* ctx, uint8_t* buf);
void AES_ECB_decrypt(const struct AES_ctx* ctx, uint8_t* buf);

void AES_CBC_encrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length);
void AES_CBC_decrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length);

/* Same function for encrypting as for decrypting in CTR mode */
void AES_CTR_xcrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length);

ملاحظات مهمة:

  • لا يتم توفير أي حشو (padding)، لذا يجب أن تكون جميع المخازن المؤقتة مضاعفاتٍ لـ 16 بايت في وضعَي CBC وECB. وللحشو يُنصح باستخدام PKCS7.
  • يُعتبر وضع ECB غير آمن لمعظم الاستخدامات وغير مُنفَّذ في وضع التدفق (streaming mode). إذا كنت بحاجة إلى هذا الوضع، فاستدعِ الدالة لكل كتلة من 16 بايت تريد تشفيرها. راجع مقالة ويكيبيديا حول ECB لمزيد من التفاصيل.
  • صُمِّمت هذه المكتبة لصغر حجم الكود وللبساطة، وهي موجَّهة للحالات التي يكون فيها صغر حجم الملف الثنائي، وانخفاض استهلاك الذاكرة، وقابلية النقل أكثر أهمية من الأداء العالي. إذا كانت السرعة مصدر قلق، يمكنك تجربة مكتبات أكثر تعقيدًا، مثل Mbed TLS وOpenSSL وما إلى ذلك.

يمكنك اختيار استخدام أيٍّ من أوضاع التشغيل أو جميعها، بتعريف الرموز CBC أو CTR أو ECB في aes.h (اقرأ التعليقات للتوضيح).

يجب على مستخدمي C++ استخدام #include مع aes.hpp بدلاً من aes.h

لا يوجد فحص أخطاء مدمج أو حماية من أخطاء الوصول إلى الذاكرة خارج النطاق الناتجة عن إدخال خبيث.

تستهلك الوحدة أقل من 200 بايت من RAM و1-2 كيلوبايت من ROM عند ترجمتها لمعمارية ARM، ولكن قد تختلف النتائج (YMMV) اعتمادًا على الأوضاع المُفعَّلة.

إنها واحدة من أصغر التنفيذات بلغة C التي رأيتها حتى الآن، لكن لا تتردد في التواصل معي إذا كنت تعرف شيئًا أصغر (أو لديك تحسينات للكود هنا).

لقد استخدمت الكود بنجاح على منصات x86 ذات 64 بت، وARM ذات 32 بت، وAVR ذات 8 بت.

مخرجات الحجم من GCC عند ترجمة وضع CTR فقط لمعمارية ARM:

root@kitploit:~
$ arm-none-eabi-gcc -Os -DCBC=0 -DECB=0 -DCTR=1 -c aes.c
$ size aes.o
   text    data     bss     dec     hex filename
   1171       0       0    1171     493 aes.o

.. وعند الترجمة لمجموعة تعليمات THUMB، ننتهي بحجم كود أقل بكثير من 1 كيلوبايت.

root@kitploit:~
$ arm-none-eabi-gcc -Os -mthumb -DCBC=0 -DECB=0 -DCTR=1 -c aes.c
$ size aes.o
   text    data     bss     dec     hex filename
    903       0       0     903     387 aes.o

أستخدم مترجم ARM GCC من مؤسسة البرمجيات الحرة (Free Software Foundation):

root@kitploit:~
$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (4.8.4-1+11-1) 4.8.4 20141219 (release)
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

تم التحقق من هذا التنفيذ مقابل البيانات الواردة في:

المنشور الخاص 800-38A من المعهد الوطني للمعايير والتقنية (NIST)، إصدار 2001 الملحق F: متجهات أمثلة لأوضاع تشغيل AES.

الملاحق الأخرى في المستند قيّمة لتفاصيل التنفيذ، مثل الحشو، وتوليد IVs وnonces في وضع CTR، وما إلى ذلك.

شكرًا صادقًا من القلب لـكل الأشخاص الرائعين الذين ساهموا في هذا المشروع.

جميع المواد في هذا المستودع في المجال العام (public domain).

تنزيل الأداة