aesio
– AES encryption routines¶
The AES
module contains classes used to implement encryption
and decryption. It aims to be low overhead in terms of memory.
For more information on AES, refer to the Wikipedia entry.
Available on these boards
- class aesio.AES(key: circuitpython_typing.ReadableBuffer, mode: int = 0, IV: circuitpython_typing.ReadableBuffer | None = None, segment_size: int = 8)¶
Encrypt and decrypt AES streams
Create a new AES state with the given key.
- Parameters:
key (ReadableBuffer) – A 16-, 24-, or 32-byte key
mode (int) – AES mode to use. One of:
MODE_ECB
,MODE_CBC
, orMODE_CTR
IV (ReadableBuffer) – Initialization vector to use for CBC or CTR mode
Additional arguments are supported for legacy reasons.
Encrypting a string:
import aesio from binascii import hexlify key = b'Sixteen byte key' inp = b'CircuitPython!!!' # Note: 16-bytes long outp = bytearray(len(inp)) cipher = aesio.AES(key, aesio.MODE_ECB) cipher.encrypt_into(inp, outp) hexlify(outp)
- rekey(key: circuitpython_typing.ReadableBuffer, IV: circuitpython_typing.ReadableBuffer | None = None) None ¶
Update the AES state with the given key.
- Parameters:
key (ReadableBuffer) – A 16-, 24-, or 32-byte key
IV (ReadableBuffer) – Initialization vector to use for CBC or CTR mode
- encrypt_into(src: circuitpython_typing.ReadableBuffer, dest: circuitpython_typing.WriteableBuffer) None ¶
Encrypt the buffer from
src
intodest
.For ECB mode, the buffers must be 16 bytes long. For CBC mode, the buffers must be a multiple of 16 bytes, and must be equal length. For CTR mode, there are no restrictions.
- decrypt_into(src: circuitpython_typing.ReadableBuffer, dest: circuitpython_typing.WriteableBuffer) None ¶
Decrypt the buffer from
src
intodest
. For ECB mode, the buffers must be 16 bytes long. For CBC mode, the buffers must be a multiple of 16 bytes, and must be equal length. For CTR mode, there are no restrictions.