cryptolib — kryptografische Chiffren

Das Modul cryptolib stellt Primitive für symmetrische Chiffren bereit. Auf OpenMV Cams ist es immer dann enthalten, wenn das Modul ssl aktiviert ist.

Klassen

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

Erstellt ein neues AES-Chiffreobjekt, das für die Verschlüsselung oder Entschlüsselung geeignet ist. Nach der Initialisierung kann das Chiffreobjekt nur für eine Richtung verwendet werden — das Ausführen von decrypt() nach encrypt() (oder umgekehrt) wird nicht unterstützt.

Parameter:

  • key – der Schlüssel für die Ver-/Entschlüsselung. Muss genau 16 Bytes (AES-128) oder 32 Bytes (AES-256) lang sein; AES-192 wird nicht unterstützt. Jedes Objekt, das das Buffer-Protokoll unterstützt, wird akzeptiert.

  • mode – wählt den Blockchiffremodus aus:

    Wert

    Name

    Beschreibung

    1

    ECB

    Electronic Code Book. Jeder 16-Byte-Block wird unabhängig verschlüsselt; identische Klartextblöcke ergeben identischen Chiffretext. Für neue Designs im Allgemeinen nicht empfohlen.

    2

    CBC

    Cipher Block Chaining. Jeder Block wird vor der Verschlüsselung mit dem vorherigen Chiffretextblock per XOR verknüpft. Erfordert einen 16-Byte-IV.

    ECB und CBC erfordern beide, dass die Eingabelänge ein Vielfaches der 16-Byte-AES-Blockgröße ist.

  • IV – der 16-Byte-Initialisierungsvektor für den CBC-Modus. Wird bei ECB ignoriert.

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

Verschlüsselt in_buf. Die Pufferlänge muss ein Vielfaches von 16 Bytes sein; füllen Sie den Klartext vor dem Aufruf selbst auf.

Wird out_buf weggelassen, wird das Ergebnis als neu zugewiesenes bytes-Objekt zurückgegeben. Andernfalls wird der Chiffretext in den veränderbaren Puffer out_buf geschrieben, der mindestens so lang wie in_buf sein muss. in_buf und out_buf dürfen für eine In-Place-Verschlüsselung auf denselben Puffer verweisen.

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

Wie encrypt(), kehrt jedoch die Operation um.