cryptolib — algorithmes de chiffrement cryptographiques¶
Le module cryptolib fournit des primitives de chiffrement symétrique. Sur les OpenMV Cam, il est inclus dès lors que le module ssl est activé.
Classes¶
- class cryptolib.aes(key: bytes | bytearray | memoryview, mode: int, IV: bytes | bytearray | memoryview | None = None)¶
Crée un nouvel objet de chiffrement AES, adapté au chiffrement ou au déchiffrement. Après initialisation, l’objet de chiffrement ne peut être utilisé que dans un seul sens — exécuter
decrypt()aprèsencrypt()(ou inversement) n’est pas pris en charge.Paramètres :
key– la clé de chiffrement/déchiffrement. Elle doit faire exactement 16 octets (AES-128) ou 32 octets (AES-256) ; AES-192 n’est pas pris en charge. Tout objet implémentant le protocole tampon est accepté.mode– sélectionne le mode de chiffrement par blocs :Valeur
Nom
Description
1ECB
Electronic Code Book. Chaque bloc de 16 octets est chiffré indépendamment ; des blocs de texte en clair identiques produisent un texte chiffré identique. Généralement déconseillé pour les nouvelles conceptions.
2CBC
Cipher Block Chaining. Chaque bloc est combiné par XOR avec le bloc de texte chiffré précédent avant chiffrement. Nécessite un
IVde 16 octets.ECB et CBC nécessitent tous deux que la longueur de l’entrée soit un multiple de la taille de bloc AES de 16 octets.
IV– le vecteur d’initialisation de 16 octets pour le mode CBC. Ignoré pour ECB.
- encrypt(in_buf: bytes | bytearray | memoryview, out_buf: bytearray | memoryview | None = None) bytes¶
Chiffre
in_buf. La longueur du tampon doit être un multiple de 16 octets ; complétez vous-même le texte en clair avant l’appel.Si
out_bufest omis, le résultat est renvoyé sous forme d’un objetbytesnouvellement alloué. Sinon, le texte chiffré est écrit dans le tampon mutableout_buf, qui doit être au moins aussi long quein_buf.in_bufetout_bufpeuvent désigner le même tampon pour un chiffrement sur place.
- decrypt(in_buf: bytes | bytearray | memoryview, out_buf: bytearray | memoryview | None = None) bytes¶
Comme
encrypt(), mais inverse l’opération.