Lightweight AES-128
A compact C implementation of the AES-128 block primitive that operates on 16-byte blocks without heap allocation and exposes the round transformations and key schedule directly.
The central boundary of this repository is the difference between an AES primitive and a secure encryption system. The code performs AES-128 transformations on a 16-byte block, expands the 128-bit key into the round-key schedule, and avoids heap allocation. S-box, inverse S-box and GF(2^8) operations are kept close to the algorithm so the primitive can be studied directly.
What is absent matters just as much. The project does not provide CBC/CTR/GCM mode handling, authentication, padding, a KDF, nonce or IV policy, or secure key storage. Table lookups also mean the implementation should not be assumed constant-time or resistant to side-channel analysis. Production systems should normally rely on audited platform cryptography rather than treating this source as a drop-in security stack.
The publication metadata also records the provenance relationship to tiny-AES-c through the repository's NOTICE/licensing material. That keeps upstream material and local adaptation distinct.
Technical article: A Lightweight AES-128 Implementation in C Source: GitHub Zenodo archive: Zenodo DOI: DOI