
Product homepage of Raspberry Pi Pico (with product information). This opens doors for utilization towards a wide range of applications for novices as well as experts.ĭetailed information on Raspberry Pi Pico is available here: It is very cost-effective, available from large number of vendors, may be available in your nearest electronic shop, too. The board has small footprint with solderable headers. It also features wide range of flexible I/Os, like GPIO, UART, I2C, SPI, USB and also Programmable I/O (PIO), which is unique to this board. The Pi Pico board has 2MB of on-board QSPI Flash, which is programmable through USB Mass Storage Device mode or using Serial Wire Debug port. Multicore operation is supported by a pair of four entry FIFOs (one in each direction between the cores). The microcontroller has dual-core Arm Cortex- M0+ Processor, running at clock up to 133MHz, with 264KB internal RAM and supports up to 16MB of external Flash. Raspberry Pi Pico is a relatively new, tiny but powerful development board designed by the Raspberry Pi (UK), which is based upon RP2040 microcontroller chip, developed in-house by Raspberry Pi. Here, I'm comparing four AES libraries, tested on Raspberry Pi Pico, to check out mainly the speed and code size for the implementation. For testing these code examples, only hardware required is a Raspberry Pi Pico board and the USB programming cable, and you are ready to go with a laptop/PC loaded with IDE (PlatformIO or Arduino). These may serve purpose of example/ demo code for newcomers interested in checking out AES functionality in their programs. The resultant test codes with terminal outputs are given here. So, I decided to test them mainly for the speed of encryption/ decryption, which is the subject of this post. I was checking out some libraries to use for file encryption in a project. In addition, based on the mode of operation, Initialization Vector (IV) is also required for AES, which is unique (usually generated run time) for each encryption operation.
So, the input file (or data string) is processed in blocks of 16 bytes each, as per the Block Cipher mode of operation (see the wiki here). The Advance Encryption Standard (AES) is a block cipher, which uses 128 or 192 or 256 bit key to encrypt or decrypt 128 bit (16 byte) block of input data. Here, we are going to compare some library implementation examples of the most used standard today, AES. There are various algorithms to encrypt files.
Sometimes we also need files to be encrypted on local storage like built-in flash or memory cards, etc. In embedded systems also, it has become an integrated part due to the wide spread of IoT and other online systems. Data Encryption has become an absolute necessity in today's world of internet.