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()dopoencrypt()(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
1ECB
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.
2CBC
Cipher Block Chaining. Ogni blocco viene sottoposto a XOR con il blocco di testo cifrato precedente prima della cifratura. Richiede un
IVdi 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_bufviene omesso, il risultato viene restituito come un nuovo oggettobytesappena allocato. Altrimenti il testo cifrato viene scritto nel buffer mutabileout_buf, che deve essere lungo almeno quantoin_buf.in_bufeout_bufpossono 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.