void AES_Func_Test()
{
uint8_t ausPlain[AES_TEST_LEN] = {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,
0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,
0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,
0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30};
uint8_t ausResult[AES_TEST_LEN] = {0};
uint8_t ausKey[16] = {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10};
WIZ_SYN_CRYPTO_CAL_t callAes;
printf("The AES data input is:\r\n");
for (i = 0; i < AES_TEST_LEN; i++)
printf("%02X", ausPlain[i]);
printf("\r\n");
/* ECB 加密 */
memset((uint8_t *)&callAes, 0, sizeof(callAes));
callAes.pu8In = ausPlain;
callAes.ui32InLen = AES_TEST_LEN;
callAes.pu8Out = ausResult;
callAes.ui32OutLen = AES_TEST_LEN;
callAes.pu8Key = ausKey;
callAes.ui32Key = WIZ_AES_KEY_SIZE_128 | WIZ_AES_OP_MODE_ECB | WIZ_AES_OP_MODE_ENCRYPT;
callAes.ui32Ctrl = WIZC_CalcBuffCrc((uint8_t *)&callAes, sizeof(WIZ_SYN_CRYPTO_CAL_t) - 8);
WIZAES_EncDec(&callAes);
printf("The AES (ECB) encrypted message is:\r\n");
for (i = 0; i < AES_TEST_LEN; i++)
printf("%02X", ausResult[i]);
printf("\r\n");
/* ECB 解密 */
memset((uint8_t *)&callAes, 0, sizeof(callAes));
callAes.pu8In = ausResult;
callAes.ui32InLen = AES_TEST_LEN;
callAes.pu8Out = ausPlain;
callAes.ui32OutLen = AES_TEST_LEN;
callAes.pu8Key = ausKey;
callAes.ui32Key = WIZ_AES_KEY_SIZE_128 | WIZ_AES_OP_MODE_ECB | WIZ_AES_OP_MODE_DECRYPT;
callAes.ui32Ctrl = WIZC_CalcBuffCrc((uint8_t *)&callAes, sizeof(WIZ_SYN_CRYPTO_CAL_t) - 8);
WIZAES_EncDec(&callAes);
printf("The AES (ECB) decrypted message is:\r\n");
for (i = 0; i < AES_TEST_LEN; i++)
printf("%02X", ausPlain[i]);
printf("\r\n");
}
ECB 模式中每个 128 位块独立加密,结构简单速度快。通过 ui32Key 字段选择密钥长度(128位)、工作模式(ECB)和操作类型(加密/解密)。ui32Ctrl 字段存放 CRC 校验值,确保结构体数据完整性。