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ès encrypt() (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

    1

    ECB

    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.

    2

    CBC

    Cipher Block Chaining. Chaque bloc est combiné par XOR avec le bloc de texte chiffré précédent avant chiffrement. Nécessite un IV de 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_buf est omis, le résultat est renvoyé sous forme d’un objet bytes nouvellement alloué. Sinon, le texte chiffré est écrit dans le tampon mutable out_buf, qui doit être au moins aussi long que in_buf. in_buf et out_buf peuvent 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.