cryptolib — cifras criptográficas

O módulo cryptolib fornece primitivas de cifra simétrica. Nas OpenMV Cams, ele é incluído sempre que o módulo ssl está habilitado.

Classes

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

Cria um novo objeto de cifra AES, adequado para criptografia ou descriptografia. Após a inicialização, o objeto de cifra só pode ser usado em uma direção — executar decrypt() após encrypt() (ou vice-versa) não é suportado.

Parâmetros:

  • key – a chave de criptografia/descriptografia. Deve ter exatamente 16 bytes (AES-128) ou 32 bytes (AES-256); AES-192 não é suportado. Qualquer objeto que implemente o protocolo de buffer é aceito.

  • mode – seleciona o modo de cifra de bloco:

    Valor

    Nome

    Descrição

    1

    ECB

    Electronic Code Book. Cada bloco de 16 bytes é criptografado de forma independente; blocos de texto puro idênticos produzem texto cifrado idêntico. Geralmente não é recomendado para novos projetos.

    2

    CBC

    Cipher Block Chaining. Cada bloco passa por uma operação XOR com o bloco de texto cifrado anterior antes da criptografia. Requer um IV de 16 bytes.

    Tanto ECB quanto CBC exigem que o comprimento da entrada seja um múltiplo do tamanho de bloco AES de 16 bytes.

  • IV – o vetor de inicialização de 16 bytes para o modo CBC. Ignorado para ECB.

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

Criptografa in_buf. O comprimento do buffer deve ser um múltiplo de 16 bytes; faça o preenchimento (padding) do texto puro por conta própria antes de chamar.

Se out_buf for omitido, o resultado é retornado como um objeto bytes recém-alocado. Caso contrário, o texto cifrado é escrito no buffer mutável out_buf, que deve ter pelo menos o mesmo comprimento que in_buf. in_buf e out_buf podem se referir ao mesmo buffer para criptografia in-place.

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

Como encrypt(), mas inverte a operação.