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 вимагають, щоб довжина вхідних даних була кратна розміру блоку AES (16 байт).

  • 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(), але виконує зворотну операцію.