cryptolib — криптографические шифры

Модуль cryptolib предоставляет примитивы симметричного шифрования. На камерах OpenMV Cam он включается всякий раз, когда включён модуль ssl.

Классы

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

Создаёт новый объект шифра AES, пригодный для шифрования или дешифрования. После инициализации объект шифра может использоваться только в одном направлении — выполнение decrypt() после encrypt() (или наоборот) не поддерживается.

Параметры:

  • key — ключ шифрования/дешифрования. Должен быть ровно 16 байт (AES-128) или 32 байта (AES-256); AES-192 не поддерживается. Принимается любой объект, поддерживающий протокол буфера.

  • mode — выбирает режим блочного шифра:

    Значение

    Имя

    Описание

    1

    ECB

    Electronic Code Book. Каждый 16-байтовый блок шифруется независимо; идентичные блоки открытого текста дают идентичный шифротекст. Как правило, не рекомендуется для новых разработок.

    2

    CBC

    Cipher Block Chaining. Каждый блок объединяется операцией XOR с предыдущим блоком шифротекста перед шифрованием. Требует 16-байтовый IV.

    Как ECB, так и CBC требуют, чтобы длина входных данных была кратна 16-байтовому размеру блока AES.

  • IV — 16-байтовый вектор инициализации для режима CBC. Игнорируется для ECB.

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

Шифрует in_buf. Длина буфера должна быть кратна 16 байтам; дополните открытый текст самостоятельно перед вызовом.

Если out_buf опущен, результат возвращается в виде вновь выделенного объекта bytes. В противном случае шифротекст записывается в изменяемый буфер out_buf, который должен быть не короче in_buf. in_buf и out_buf могут ссылаться на один и тот же буфер для шифрования на месте.

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

Как encrypt(), но выполняет обратную операцию.