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— выбирает режим блочного шифра:Значение
Имя
Описание
1ECB
Electronic Code Book. Каждый 16-байтовый блок шифруется независимо; идентичные блоки открытого текста дают идентичный шифротекст. Как правило, не рекомендуется для новых разработок.
2CBC
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(), но выполняет обратную операцию.