C语言实现AES算法

aes加密算法流程图如下图所示:
明文p:未加密的原始数据;密钥k:加密原始数据密码,对称算法中,加密与解密所需的密钥相同,该密钥不能直接进行传输,否则会造成密钥泄露;常规的做法是使用非对称算法对密钥进行加密之后再进行传输。
aes加密函数:加密函数将传入的密钥k与明文p进行处理,之后生成一个被加密的信息密文c。
密文c:经过密钥加密后的数据。
aes解密函数:解密函数将传入的密钥k与密文c进行处理,之后生成一个没有加密的明文p。
代码部分讲解:
aes算法相关接口在aes.h内,主要的接口:
uint8_t *aes_init(size_t key_size);void aes_key_expansion(uint8_t *key, uint8_t *w);void aes_inv_cipher(uint8_t *in, uint8_t *out, uint8_t *w);void aes_cipher(uint8_t *in, uint8_t *out, uint8_t *w);  
aes_init()函数作用:初始化aes变量,创建扩展密钥所需要的内存
key_size:扩展密钥所需内存大小
aes_key_expansion()作用:创建扩展密钥
key:扩展密钥
w:扩展密钥内存首地址
aes_inv_cipher()作用:数据解密
in:输入加密的信息
out:输出解密后的信息
w:扩展密钥内存首地址
aes_cipher()作用:数据加密
in:输入未加密的信息
out:输出加密后的信息
w:扩展密钥内存首地址
代码实现例程如下:
int main() { uint8_t i = 0; /* 256 bit key */ uint8_t key[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f}; uint8_t in[] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}; uint8_t out[16]; uint8_t *w = null; w = aes_init(sizeof(key)); aes_key_expansion(key, w); printf(plaintext message:n); for (i = 0; i < 4; i++) { printf(%02x %02x %02x %02x , in[4*i+0], in[4*i+1], in[4*i+2], in[4*i+3]); } printf(n); aes_cipher(in, out, w); printf(ciphered message:n); for (i = 0; i < 4; i++) { printf(%02x %02x %02x %02x , out[4*i+0], out[4*i+1], out[4*i+2], out[4*i+3]); } printf(n); aes_inv_cipher(out, in, w); printf(original message (after inv cipher):n); for (i = 0; i < 4; i++) { printf(%02x %02x %02x %02x , in[4*i+0], in[4*i+1], in[4*i+2], in[4*i+3]); } printf(n); free(w); return 0;}  

笔记本音频系统的优化与保养
苹果M3在CPU测试中暴露出一个问题
Pro-face可编程人机界面GC4000系列荣获“创新产品奖”
2020年Q3的电脑处理器榜单出炉,AMD在笔记本市场继续高歌猛进
奥蒂玛将在Q3推出全新AI操作系统,实现AOI的完全自动化!
C语言实现AES算法
16个县市区和全市50多名优秀农机培训“植保无人机”的未来发展方向
专家:物联网只是传感器主宰世界道路上的中间手段
如何对高频变压器内部进行emi布线?
量子点和OLED电视,你选哪种
DRAM存储器三星与海力士市占近九成 美光濒临淘汰
大型油浸式变压器结构的简单介绍
什么是LED贴膜屏?LED贴膜屏PK传统LED显示屏
汽车车身控制模块驱动器参考设计
商汤的AR生态布局抢滩战
飞兆半导体新型集成升压转换器用于LED背光驱动--FAN53
3d可视化建模数字孪生虚拟工厂3D交互模型
线材测径仪常见故障的排除方法
鳍式场效应晶体管之父
电瓶修复-过充电修复的原理