cryptolib --- cipher kriptografi

Modul cryptolib menyediakan primitif cipher simetris. Pada OpenMV Cam, modul ini disertakan setiap kali modul ssl diaktifkan.

Kelas

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

Buat objek cipher AES baru, yang sesuai untuk enkripsi atau dekripsi. Setelah inisialisasi, objek cipher hanya dapat digunakan untuk satu arah --- menjalankan decrypt() setelah encrypt() (atau sebaliknya) tidak didukung.

Parameter:

  • key -- kunci enkripsi/dekripsi. Harus tepat 16 byte (AES-128) atau 32 byte (AES-256); AES-192 tidak didukung. Objek apa pun yang mendukung protokol buffer diterima.

  • mode -- memilih mode cipher blok:

    Nilai

    Nama

    Deskripsi

    1

    ECB

    Electronic Code Book. Setiap blok 16-byte dienkripsi secara independen; blok plaintext yang identik menghasilkan ciphertext yang identik. Umumnya tidak direkomendasikan untuk desain baru.

    2

    CBC

    Cipher Block Chaining. Setiap blok di-XOR dengan blok ciphertext sebelumnya sebelum enkripsi. Memerlukan IV sepanjang 16 byte.

    ECB dan CBC keduanya mengharuskan panjang input kelipatan dari ukuran blok AES 16-byte.

  • IV -- vektor inisialisasi 16-byte untuk mode CBC. Diabaikan untuk ECB.

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

Enkripsi in_buf. Panjang buffer harus kelipatan 16 byte; lakukan padding pada plaintext sendiri sebelum memanggil fungsi ini.

Jika out_buf dihilangkan, hasilnya dikembalikan sebagai objek bytes yang baru dialokasikan. Jika tidak, ciphertext ditulis ke dalam buffer yang dapat diubah out_buf, yang harus setidaknya sepanjang in_buf. in_buf dan out_buf dapat merujuk ke buffer yang sama untuk enkripsi di tempat.

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

Seperti encrypt(), tetapi membalik operasinya.