A small, portable C implementation of AES encryption supporting ECB, CBC, and CTR modes with minimal memory footprint.
Tiny AES in C is a small, portable implementation of the AES encryption algorithm written in C. It provides AES128/192/256 encryption with support for ECB, CBC, and CTR modes, designed for environments where code size and memory usage are critical constraints. The library focuses on simplicity and minimal footprint rather than high performance.
Embedded systems developers, IoT engineers, and programmers working on resource-constrained platforms who need a lightweight AES implementation without the overhead of larger cryptographic libraries.
Developers choose Tiny AES in C for its extremely small compiled size (as low as 1KB), portability across diverse architectures, and straightforward API. It's specifically optimized for scenarios where binary size and memory footprint matter more than encryption speed.
Small portable AES128/192/256 in C
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Compiled size as low as 1-2KB ROM and under 200 bytes RAM on ARM, making it ideal for resource-constrained embedded systems, as documented in the README with GCC size outputs.
Successfully runs on diverse architectures including 64-bit x86, 32-bit ARM, and 8-bit AVR, verified by the author's usage and emphasized in the description.
Simple functions for encryption and decryption with clear context initialization, reducing integration complexity, as shown in the straightforward code snippet provided.
Supports ECB, CBC, and CTR modes via compile-time flags, allowing developers to enable only what they need for specific use cases.
Requires external implementation of padding like PKCS7 for CBC and ECB modes, adding development overhead, as the README explicitly states no padding is provided.
Lacks error checking and protection from memory access errors, which could lead to vulnerabilities if not handled carefully, as noted in the README's warning about malicious input.
Optimized for small size over speed, making it slower than comprehensive libraries like OpenSSL or Mbed TLS, a trade-off the README openly admits.