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 אינו נתמך. כל אובייקט התומך בפרוטוקול ה-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 בתים; רפד את הטקסט הגלוי בעצמך לפני הקריאה.

אם 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(), אך מהפכת את הפעולה.