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ósencrypt()(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
1ECB
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.
2CBC
Cipher Block Chaining. Cada bloco passa por uma operação XOR com o bloco de texto cifrado anterior antes da criptografia. Requer um
IVde 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_buffor omitido, o resultado é retornado como um objetobytesrecém-alocado. Caso contrário, o texto cifrado é escrito no buffer mutávelout_buf, que deve ter pelo menos o mesmo comprimento quein_buf.in_bufeout_bufpodem 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.