cryptolib — kryptografiska chiffer

Modulen cryptolib tillhandahåller primitiver för symmetriska chiffer. På OpenMV Cam ingår den närhelst modulen ssl är aktiverad.

Klasser

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

Skapar ett nytt AES-chifferobjekt, lämpligt för kryptering eller dekryptering. Efter initiering kan chifferobjektet endast användas för en riktning — att köra decrypt() efter encrypt() (eller tvärtom) stöds inte.

Parametrar:

  • key – krypterings-/dekrypteringsnyckeln. Måste vara exakt 16 byte (AES-128) eller 32 byte (AES-256); AES-192 stöds inte. Alla objekt som följer buffertprotokollet accepteras.

  • mode – väljer blockchifferläget:

    Värde

    Namn

    Beskrivning

    1

    ECB

    Electronic Code Book. Varje 16-bytes block krypteras oberoende; identiska klartextblock ger identisk chiffertext. Rekommenderas i allmänhet inte för nya konstruktioner.

    2

    CBC

    Cipher Block Chaining. Varje block XOR:as med föregående chiffertextblock före kryptering. Kräver en 16-bytes IV.

    Både ECB och CBC kräver att indatalängden är en multipel av AES-blockstorleken på 16 byte.

  • IV – den 16-bytes initialiseringsvektorn för CBC-läge. Ignoreras för ECB.

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

Krypterar in_buf. Buffertlängden måste vara en multipel av 16 byte; fyll ut klartexten själv före anropet.

Om out_buf utelämnas returneras resultatet som ett nyallokerat bytes-objekt. Annars skrivs chiffertexten till den muterbara bufferten out_buf, som måste vara minst lika lång som in_buf. in_buf och out_buf får referera till samma buffert för kryptering på plats.

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

Som encrypt(), men omvänder operationen.