cryptolib --- 密碼學加密演算法

cryptolib 模組提供對稱式加密原語。在 OpenMV Cam 上,只要啟用了 ssl 模組,就會包含此模組。

類別

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

建立一個新的 AES 加密物件,適用於加密或解密。初始化之後,加密物件僅能用於單一方向——在 encrypt() 之後執行 decrypt()(或反之)並不受支援。

參數:

  • 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 都要求輸入長度為 16 位元組 AES 區塊大小的倍數。

  • IV -- CBC 模式所用的 16 位元組初始化向量。在 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_bufout_buf 可指向相同的緩衝區以進行就地加密。

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

encrypt() 類似,但執行相反的操作。