cryptolib — 암호화 암호(cipher)

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-place) 암호화를 위해 in_bufout_buf는 동일한 버퍼를 가리킬 수 있습니다.

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

encrypt()와 같지만 연산을 반대로 수행합니다.