cryptolib --- การเข้ารหัสแบบสมมาตร

โมดูล cryptolib ให้ primitive การเข้ารหัสแบบสมมาตร บน OpenMV Cams โมดูลนี้จะรวมอยู่ด้วยเสมอเมื่อเปิดใช้งานโมดูล ssl

คลาส

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

สร้างออบเจกต์ cipher AES ใหม่ที่เหมาะสำหรับการเข้ารหัสหรือถอดรหัส หลังจากการเริ่มต้น ออบเจกต์ cipher สามารถใช้ได้เพียงทิศทางเดียวเท่านั้น --- การเรียก decrypt() หลังจาก encrypt() (หรือในทางกลับกัน) ไม่ได้รับการรองรับ

พารามิเตอร์:

  • key -- คีย์สำหรับการเข้า/ถอดรหัส ต้องมีขนาดเป็น 16 ไบต์ (AES-128) หรือ 32 ไบต์ (AES-256) เท่านั้น; AES-192 ไม่ได้รับการรองรับ รองรับออบเจกต์ที่ใช้โปรโตคอล buffer

  • 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 ไบต์; ให้เติม padding ในข้อความต้นฉบับก่อนเรียกใช้งาน

ถ้าละเว้น out_buf ผลลัพธ์จะถูกคืนเป็นออบเจกต์ bytes ที่จัดสรรใหม่ มิฉะนั้น ข้อความรหัสจะถูกเขียนลงใน buffer ที่แก้ไขได้ out_buf ซึ่งต้องมีขนาดอย่างน้อยเท่ากับ in_buf in_buf และ out_buf อาจอ้างถึง buffer เดียวกันสำหรับการเข้ารหัสในพื้นที่

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

เหมือนกับ encrypt() แต่ดำเนินการย้อนกลับ