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");
}

 

现象:

 

仅用于个人学习分享;

如有错漏请指正。

 

posted @ 2024-11-06 11:10  小舟从此逝_1  阅读(2)  评论(0编辑  收藏  举报