cryptolib — szyfry kryptograficzne

Moduł cryptolib udostępnia prymitywy szyfrów symetrycznych. W kamerach OpenMV Cam jest dołączany zawsze, gdy włączony jest moduł ssl.

Klasy

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

Tworzy nowy obiekt szyfru AES, odpowiedni do szyfrowania lub deszyfrowania. Po inicjalizacji obiekt szyfru może być używany tylko w jednym kierunku — wywołanie decrypt() po encrypt() (lub odwrotnie) nie jest obsługiwane.

Parametry:

  • key – klucz szyfrujący/deszyfrujący. Musi mieć dokładnie 16 bajtów (AES-128) lub 32 bajty (AES-256); AES-192 nie jest obsługiwany. Akceptowany jest dowolny obiekt obsługujący protokół bufora.

  • mode – wybiera tryb szyfru blokowego:

    Wartość

    Nazwa

    Opis

    1

    ECB

    Electronic Code Book. Każdy 16-bajtowy blok jest szyfrowany niezależnie; identyczne bloki tekstu jawnego dają identyczny szyfrogram. Generalnie nie jest zalecany w nowych projektach.

    2

    CBC

    Cipher Block Chaining. Każdy blok jest poddawany operacji XOR z poprzednim blokiem szyfrogramu przed zaszyfrowaniem. Wymaga 16-bajtowego IV.

    Zarówno ECB, jak i CBC wymagają, aby długość danych wejściowych była wielokrotnością 16-bajtowego rozmiaru bloku AES.

  • IV – 16-bajtowy wektor inicjalizujący dla trybu CBC. Ignorowany w trybie ECB.

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

Szyfruje in_buf. Długość bufora musi być wielokrotnością 16 bajtów; uzupełnij tekst jawny dopełnieniem samodzielnie przed wywołaniem.

Jeśli out_buf zostanie pominięty, wynik jest zwracany jako nowo zaalokowany obiekt bytes. W przeciwnym razie szyfrogram jest zapisywany do modyfikowalnego bufora out_buf, który musi być co najmniej tak długi jak in_buf. in_buf i out_buf mogą wskazywać ten sam bufor w celu szyfrowania w miejscu.

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

Działa jak encrypt(), ale odwraca operację.