cryptolib — kryptografické šifry

Modul cryptolib poskytuje primitiva symetrických šifer. Na OpenMV Camech je zahrnut vždy, když je povolen modul ssl.

Třídy

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

Vytvoří nový objekt šifry AES vhodný pro šifrování nebo dešifrování. Po inicializaci lze objekt šifry použít pouze pro jeden směr — spuštění decrypt() po encrypt() (nebo naopak) není podporováno.

Parametry:

  • key – šifrovací/dešifrovací klíč. Musí mít přesně 16 bajtů (AES-128) nebo 32 bajtů (AES-256); AES-192 není podporován. Přijímán je libovolný objekt podporující buffer protocol.

  • mode – volí režim blokové šifry:

    Hodnota

    Název

    Popis

    1

    ECB

    Electronic Code Book. Každý 16bajtový blok je šifrován nezávisle; identické bloky otevřeného textu produkují identický šifrový text. Pro nové návrhy se obecně nedoporučuje.

    2

    CBC

    Cipher Block Chaining. Každý blok je před šifrováním zkombinován operací XOR s předchozím blokem šifrového textu. Vyžaduje 16bajtový IV.

    ECB i CBC vyžadují, aby délka vstupu byla násobkem 16bajtové velikosti bloku AES.

  • IV – 16bajtový inicializační vektor pro režim CBC. Pro ECB je ignorován.

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

Zašifruje in_buf. Délka bufferu musí být násobkem 16 bajtů; otevřený text doplňte sami před voláním.

Pokud je out_buf vynechán, výsledek se vrátí jako nově alokovaný objekt bytes. Jinak se šifrový text zapíše do měnitelného bufferu out_buf, který musí být alespoň tak dlouhý jako in_buf. in_buf a out_buf mohou odkazovat na stejný buffer pro šifrování na místě.

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

Jako encrypt(), ale obrací operaci.