单片机AES-128ECB/CBC模式加解密C语言实现
单片机上的 AES128 加解密,用 C 语言来搞,挺实用的一个资源。支持ECB
和CBC
两种模式,代码清晰不绕弯,填充用的是常见的PKCS7
,块对齐也比较顺手。对于资源紧张的小系统,这种纯 C 实现的方式,真的蛮适合。
ECB 的加密逻辑比较直接,每个 16 字节一块单独加,响应快,但重复模式容易被看出来。简单数据、少量传输可以用,但你要是搞大块连续的数据,建议还是用 CBC。
CBC 就稳一些了,每块数据都跟上一个密文块混合后再加密,配个随机IV
,安全性高不少。不过 IV 怎么传、怎么保管,得你自己好,不然还是不安全。
代码里边做了密钥扩展
的逻辑,AES128 是固定 16 字节的密钥嘛,要展开成多个轮密钥,才能跑完整的轮数。这一步用 C 写的话,细节要注意字节序还有 S 盒替换,文档里也讲得比较明白。
如果你平时在做 STM32、51 或者 ESP8266 上的开发,又不想引外部库,那这个纯 C 实现挺合适。代码不依赖系统 API,移植方便,空间占用也不大。
几个相关资源也整理好了,你可以直接下载看看:
AES128CBC 或者 ECB 源码
AES128ECB CBC 模式加密解密函数 C 语言实现单片机嵌入式
C 语言实现 AES128 加解密算法
如果你打算搞点加密传输,又刚好在用单片机,建议先从这个入手试试,代码不多,上手还挺快的。
下载地址
用户评论