cryptolib — cifrari crittografici

Il modulo cryptolib fornisce primitive di cifratura simmetrica. Sulle OpenMV Cam è incluso ogni volta che il modulo ssl è abilitato.

Classi

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

Crea un nuovo oggetto cifrario AES, adatto alla cifratura o alla decifratura. Dopo l’inizializzazione, l’oggetto cifrario può essere usato in una sola direzione — eseguire decrypt() dopo encrypt() (o viceversa) non è supportato.

Parametri:

  • key – la chiave di cifratura/decifratura. Deve essere esattamente di 16 byte (AES-128) o 32 byte (AES-256); AES-192 non è supportato. È accettato qualsiasi oggetto che implementi il buffer-protocol.

  • mode – seleziona la modalità del cifrario a blocchi:

    Valore

    Nome

    Descrizione

    1

    ECB

    Electronic Code Book. Ogni blocco di 16 byte viene cifrato indipendentemente; blocchi di testo in chiaro identici producono testo cifrato identico. In genere sconsigliato per i nuovi progetti.

    2

    CBC

    Cipher Block Chaining. Ogni blocco viene sottoposto a XOR con il blocco di testo cifrato precedente prima della cifratura. Richiede un IV di 16 byte.

    Sia ECB che CBC richiedono che la lunghezza dell’input sia un multiplo della dimensione del blocco AES di 16 byte.

  • IV – il vettore di inizializzazione di 16 byte per la modalità CBC. Ignorato per ECB.

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

Cifra in_buf. La lunghezza del buffer deve essere un multiplo di 16 byte; applica tu stesso il padding al testo in chiaro prima della chiamata.

Se out_buf viene omesso, il risultato viene restituito come un nuovo oggetto bytes appena allocato. Altrimenti il testo cifrato viene scritto nel buffer mutabile out_buf, che deve essere lungo almeno quanto in_buf. in_buf e out_buf possono riferirsi allo stesso buffer per una cifratura in-place.

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

Come encrypt(), ma inverte l’operazione.