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"); }
现象:
仅用于个人学习分享;
如有错漏请指正。