cryptolib — cifruri criptografice

Modulul cryptolib oferă primitive de cifrare simetrică. Pe camerele OpenMV Cam este inclus ori de câte ori modulul ssl este activat.

Clase

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

Creează un nou obiect cifru AES, potrivit pentru criptare sau decriptare. După inițializare, obiectul cifru poate fi folosit doar pentru o singură direcție — rularea decrypt() după encrypt() (sau invers) nu este acceptată.

Parametri:

  • key – cheia de criptare/decriptare. Trebuie să aibă exact 16 octeți (AES-128) sau 32 de octeți (AES-256); AES-192 nu este acceptat. Este acceptat orice obiect care implementează protocolul buffer.

  • mode – selectează modul de operare al cifrului bloc:

    Valoare

    Nume

    Descriere

    1

    ECB

    Electronic Code Book. Fiecare bloc de 16 octeți este criptat independent; blocurile de text clar identice produc text cifrat identic. În general nu este recomandat pentru proiecte noi.

    2

    CBC

    Cipher Block Chaining. Fiecare bloc este combinat prin XOR cu blocul de text cifrat anterior înainte de criptare. Necesită un IV de 16 octeți.

    Atât ECB, cât și CBC necesită ca lungimea datelor de intrare să fie un multiplu al dimensiunii blocului AES de 16 octeți.

  • IV – vectorul de inițializare de 16 octeți pentru modul CBC. Ignorat pentru ECB.

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

Criptează in_buf. Lungimea tamponului (buffer) trebuie să fie un multiplu de 16 octeți; completați (padding) textul clar manual înainte de apelare.

Dacă out_buf este omis, rezultatul este returnat ca un obiect bytes nou alocat. În caz contrar, textul cifrat este scris în tamponul (buffer) mutabil out_buf, care trebuie să fie cel puțin la fel de lung ca in_buf. in_buf și out_buf pot referi același tampon (buffer) pentru criptare pe loc.

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

La fel ca encrypt(), dar inversează operația.