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()poencrypt()(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
1ECB
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.
2CBC
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_bufzostanie pominięty, wynik jest zwracany jako nowo zaalokowany obiektbytes. W przeciwnym razie szyfrogram jest zapisywany do modyfikowalnego buforaout_buf, który musi być co najmniej tak długi jakin_buf.in_bufiout_bufmogą 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ę.