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