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");
}
posted on 2024-12-30 21:45  WCH蓝牙应用分享  阅读(68)  评论(0)    收藏  举报