1.CH5XX支持的是128bit AES加密(ECB)。
2.加解密一共就两个函数,一个加密,一个解密,内容如下:
/** * @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 ); /** * @brief Decrypt data * * @param key - key 秘匙 * @param plaintextData - original data 原始数据 * @param decryptData - decrypted data 解密的数据 * * @return Command Status. */ extern bStatus_t LL_Decrypt( uint8_t *key, uint8_t *plaintextData, uint8_t *decryptData );
3.实操代码如下:
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"); }标签:AES,加密,16,uint8,CH5XX,key,PRINT,buf From: https://www.cnblogs.com/risc5-ble/p/18642540