AES加密使用
前言:芯片提供了AES-128加密(ECB模式)
如需要了解AES加解密的原理可以参考本链接:AES128加解密流程详细介绍_aes128加密-CSDN博客
本实例,在CH592上完成。
加解密的函数定义在blelib.h里在使用是需要将这个库也初始化。
先在lib.h里找到接下来需要使用的函数:
/** * @brief Clear white list * * @param None * * @return Command Status. */ extern bStatus_t LL_ClearWhiteList( void ); /** * @brief Encrypt data * * @param key - key * @param plaintextData - original data * @param encryptData - encrypted data * * @return Command Status. */ extern bStatus_t LL_Encrypt( uint8_t *key, uint8_t *plaintextData, uint8_t *encryptData );
具体实现:
void aes128_test(void) { int i = 0; // 加密秘钥 16个字节也就是128 bit uint8_t key[16] = {0X00,0X11,0X22,0X33,0X44,0X55,0X66,0X77,0X88,0X99,0XAA,0XBB,0XCC,0XDD,0XEE,0XFF}; // 需要加密的数据(保证16个字节,不够的自己填充) uint8_t source_buf[16] = {0X00,0X01,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09,0X0A,0X0B,0X0C,0X0D,0X0E,0X0F}; // 加密后数据存放区 uint8_t encrypted_buf[16]; // 解密后数据存放区 uint8_t deccrypted_buf[16]; // 开始加密,加密后的数据存放到encrypted_buf, LL_Encrypt( key, source_buf, encrypted_buf ); // 开始解密,将解密后的数据存到deccrypted_buf,ch579 11us LL_Decrypt( key, encrypted_buf, deccrypted_buf ); //打印原始数据 PRINT("source:"); for(i = 0;i < 16;i++) { PRINT("0x%02x ",source_buf[i]); } PRINT("\r\n"); //打印加密后的数据 PRINT("encrypte:"); for(i = 0;i < 16;i++) { PRINT("0x%02x ",encrypted_buf[i]); } PRINT("\r\n"); //打印解密后的数据 PRINT("deccrypte:"); for(i = 0;i < 16;i++) { PRINT("0x%02x ",deccrypted_buf[i]); } PRINT("\r\n"); }
现象:
仅用于个人学习分享;
如有错漏请指正。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~