cryptolib — cifrados criptográficos¶
El módulo cryptolib proporciona primitivas de cifrado simétrico. En las OpenMV Cam se incluye siempre que el módulo ssl esté habilitado.
Clases¶
- class cryptolib.aes(key: bytes | bytearray | memoryview, mode: int, IV: bytes | bytearray | memoryview | None = None)¶
Crea un nuevo objeto de cifrado AES, apto para cifrado o descifrado. Tras la inicialización, el objeto de cifrado solo puede usarse en una dirección — ejecutar
decrypt()después deencrypt()(o viceversa) no está admitido.Parámetros:
key– la clave de cifrado/descifrado. Debe tener exactamente 16 bytes (AES-128) o 32 bytes (AES-256); AES-192 no está admitido. Se acepta cualquier objeto con protocolo de búfer.mode– selecciona el modo de cifrado por bloques:Valor
Nombre
Descripción
1ECB
Electronic Code Book. Cada bloque de 16 bytes se cifra de forma independiente; bloques de texto plano idénticos producen texto cifrado idéntico. Generalmente no se recomienda para diseños nuevos.
2CBC
Cipher Block Chaining. Cada bloque se combina mediante XOR con el bloque de texto cifrado anterior antes del cifrado. Requiere un
IVde 16 bytes.Tanto ECB como CBC requieren que la longitud de la entrada sea un múltiplo del tamaño de bloque AES de 16 bytes.
IV– el vector de inicialización de 16 bytes para el modo CBC. Se ignora para ECB.
- encrypt(in_buf: bytes | bytearray | memoryview, out_buf: bytearray | memoryview | None = None) bytes¶
Cifra
in_buf. La longitud del búfer debe ser un múltiplo de 16 bytes; rellena el texto plano tú mismo antes de llamar.Si se omite
out_buf, el resultado se devuelve como un objetobytesrecién asignado. De lo contrario, el texto cifrado se escribe en el búfer mutableout_buf, que debe tener al menos la misma longitud quein_buf.in_bufyout_bufpueden referirse al mismo búfer para el cifrado in situ.
- decrypt(in_buf: bytes | bytearray | memoryview, out_buf: bytearray | memoryview | None = None) bytes¶
Como
encrypt(), pero invierte la operación.