AES加解密测试代码(CBC模式):
void mbedtls_aes_cbc_demo(void)
{
int i = 0;
mbedtls_aes_context ctx;
// 密码
uint8_t passwd[16] = "AAAAAAAAAACCCCDD";
// 用于加密的向量表
uint8_t iv_encrypt[16] = { 0X00, 0X01, 0X02, 0X03, 0X10, 0X11, 0X12, 0X13, 0X20, 0X21, 0X22, 0X23, 0X30, 0X31, 0X32, 0X33 };
// 用于解密的向量表
uint8_t iv_decrypt[16] = { 0X00, 0X01, 0X02, 0X03, 0X10, 0X11, 0X12, 0X13, 0X20, 0X21, 0X22, 0X23, 0X30, 0X31, 0X32, 0X33 };
// 待加密的数据
uint8_t plaintext[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P' };
// 存储加密后的输出
uint8_t encrypt[sizeof(plaintext)];
// 存储解密后的输出
uint8_t decrypt[sizeof(plaintext)];
// 加密
mbedtls_aes_setkey_enc(&ctx, passwd, 128);
mbedtls_aes_crypt_cbc(&ctx, MBEDTLS_AES_ENCRYPT, sizeof(plaintext), iv_encrypt, plaintext, encrypt);
// 解密
mbedtls_aes_setkey_dec(&ctx, passwd, 128);
mbedtls_aes_crypt_cbc(&ctx, MBEDTLS_AES_DECRYPT, sizeof(plaintext), iv_decrypt, encrypt, decrypt);
// 打印出加入后的结果
for (i = 0; i < sizeof(plaintext); i++)
{
printf("%02X", encrypt[i]);
}
printf("\r\n");
// 打印处解密后的结果
for (i = 0; i < sizeof(plaintext); i++)
{
printf("%c", decrypt[i]);
}
printf("\r\n");
}
|