cryptolib --- شيفرات التعمية

توفر الوحدة cryptolib بدائيات شيفرات التعمية المتناظرة. وعلى كاميرات OpenMV Cam تُضمَّن كلما كانت الوحدة ssl مفعّلة.

الأصناف

class cryptolib.aes(key: bytes | bytearray | memoryview, mode: int, IV: bytes | bytearray | memoryview | None = None)

تنشئ كائن شيفرة AES جديداً، مناسباً للتعمية أو فك التعمية. وبعد التهيئة، يمكن استخدام كائن الشيفرة في اتجاه واحد فقط --- فتشغيل decrypt() بعد encrypt() (أو العكس) غير مدعوم.

المعطيات:

  • key -- مفتاح التعمية/فك التعمية. يجب أن يكون بطول 16 بايت بالضبط (AES-128) أو 32 بايت (AES-256)؛ أما AES-192 فغير مدعوم. يُقبل أي كائن يدعم بروتوكول المخزن المؤقت.

  • mode -- يحدد نمط شيفرة الكتل:

    القيمة

    الاسم

    الوصف

    1

    ECB

    Electronic Code Book (دفتر الشيفرات الإلكتروني). تُعمّى كل كتلة بحجم 16 بايت بشكل مستقل؛ تنتج كتل النص الصريح المتطابقة نصاً مُعمّى متطابقاً. وعموماً لا يُنصح به في التصاميم الجديدة.

    2

    CBC

    Cipher Block Chaining (تسلسل كتل الشيفرة). تُجرى عملية XOR لكل كتلة مع كتلة النص المُعمّى السابقة قبل التعمية. يتطلب متجه تهيئة IV بطول 16 بايت.

    يتطلب كل من ECB و CBC أن يكون طول الدخل من مضاعفات حجم كتلة AES البالغ 16 بايت.

  • IV -- متجه التهيئة بطول 16 بايت لنمط CBC. يُتجاهل في نمط ECB.

encrypt(in_buf: bytes | bytearray | memoryview, out_buf: bytearray | memoryview | None = None) bytes

تُعمّي in_buf. يجب أن يكون طول المخزن المؤقت من مضاعفات 16 بايت؛ قم بحشو النص الصريح بنفسك قبل الاستدعاء.

إذا حُذف out_buf تُرجع النتيجة على شكل كائن bytes مخصص حديثاً. وإلا فإن النص المُعمّى يُكتب في المخزن المؤقت القابل للتعديل out_buf، الذي يجب ألا يقل طوله عن طول in_buf. ويمكن أن يشير كل من in_buf و out_buf إلى المخزن المؤقت نفسه للتعمية في المكان.

decrypt(in_buf: bytes | bytearray | memoryview, out_buf: bytearray | memoryview | None = None) bytes

مثل encrypt()، لكنها تعكس العملية.