AES-128加密算法C语言实现
简介
本仓库提供了一个AES-128加密算法的C语言实现,该实现已在STM32平台上验证通过,采用ECB加密模式,方便移植到其他平台。
功能特点
- AES-128加密算法:实现了AES-128标准的加密算法。
- C语言实现:代码完全使用C语言编写,便于理解和修改。
- STM32平台验证:已在STM32平台上进行了验证,确保算法的正确性和可靠性。
- ECB加密模式:采用ECB(电子密码本)模式进行加密,适合简单的加密需求。
- 易于移植:代码结构清晰,便于移植到其他嵌入式平台或系统。
使用方法
- 克隆仓库:
git clone https://github.com/your-repo-url.git
- 包含头文件:
#include "aes.h"
- 初始化AES上下文:
AES_ctx ctx; AES_init_ctx(&ctx, key);
- 加密数据:
AES_ECB_encrypt(&ctx, input_data);
- 解密数据:
AES_ECB_decrypt(&ctx, encrypted_data);
示例代码
以下是一个简单的示例代码,展示了如何使用本仓库中的AES-128加密算法:
#include "aes.h"
#include <stdio.h>
#include <string.h>
int main() {
uint8_t key[16] = {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c};
uint8_t input_data[16] = {0x32, 0x43, 0xf6, 0xa8, 0x88, 0x5a, 0x30, 0x8d, 0x31, 0x31, 0x98, 0xa2, 0xe0, 0x37, 0x07, 0x34};
uint8_t encrypted_data[16];
uint8_t decrypted_data[16];
AES_ctx ctx;
AES_init_ctx(&ctx, key);
// 加密
AES_ECB_encrypt(&ctx, input_data);
memcpy(encrypted_data, input_data, 16);
// 解密
AES_ECB_decrypt(&ctx, encrypted_data);
memcpy(decrypted_data, encrypted_data, 16);
// 输出结果
printf("Original: ");
for (int i = 0; i < 16; i++) {
printf("%02x ", input_data[i]);
}
printf("\n");
printf("Encrypted: ");
for (int i = 0; i < 16; i++) {
printf("%02x ", encrypted_data[i]);
}
printf("\n");
printf("Decrypted: ");
for (int i = 0; i < 16; i++) {
printf("%02x ", decrypted_data[i]);
}
printf("\n");
return 0;
}
贡献
欢迎任何形式的贡献,包括但不限于代码优化、文档改进、问题反馈等。请通过提交Issue或Pull Request来参与贡献。
许可证
本项目采用MIT许可证,详情请参阅LICENSE文件。