cryptolib --- mật mã đối xứng

Mô-đun cryptolib cung cấp các nguyên thủy mật mã đối xứng. Trên OpenMV Cams, nó được tích hợp khi mô-đun ssl được bật.

Lớp

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

Tạo đối tượng mật mã AES mới, phù hợp cho mã hóa hoặc giải mã. Sau khi khởi tạo, đối tượng mật mã chỉ có thể dùng cho một chiều --- chạy decrypt() sau encrypt() (hoặc ngược lại) không được hỗ trợ.

Tham số:

  • key -- khóa mã hóa/giải mã. Phải có đúng 16 byte (AES-128) hoặc 32 byte (AES-256); AES-192 không được hỗ trợ. Chấp nhận bất kỳ đối tượng nào hỗ trợ giao thức buffer.

  • mode -- chọn chế độ mật mã khối:

    Giá trị

    Tên

    Mô tả

    1

    ECB

    Electronic Code Book. Mỗi khối 16 byte được mã hóa độc lập; các khối plaintext giống nhau tạo ra ciphertext giống nhau. Nhìn chung không được khuyến nghị cho các thiết kế mới.

    2

    CBC

    Cipher Block Chaining. Mỗi khối được XOR với khối ciphertext trước trước khi mã hóa. Yêu cầu IV 16 byte.

    ECB và CBC đều yêu cầu độ dài đầu vào là bội số của kích thước khối AES 16 byte.

  • IV -- vector khởi tạo 16 byte cho chế độ CBC. Bị bỏ qua với ECB.

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

Mã hóa in_buf. Độ dài buffer phải là bội số của 16 byte; hãy tự thêm padding vào plaintext trước khi gọi.

Nếu out_buf bị bỏ qua, kết quả được trả về dưới dạng đối tượng bytes mới được cấp phát. Ngược lại, ciphertext được ghi vào buffer có thể thay đổi out_buf, phải có độ dài ít nhất bằng in_buf. in_bufout_buf có thể tham chiếu đến cùng một buffer để mã hóa tại chỗ.

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

Giống như encrypt(), nhưng thực hiện thao tác ngược lại.