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()poencrypt()(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
1ECB
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.
2CBC
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_bufvynechán, výsledek se vrátí jako nově alokovaný objektbytes. Jinak se šifrový text zapíše do měnitelného bufferuout_buf, který musí být alespoň tak dlouhý jakoin_buf.in_bufaout_bufmohou 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.