#include <stdio.h> #include <string.h> #include <mbedtls/aes.h>

#define AES_KEY_LEN 256

int aes_encrypt(const unsigned char *key, const unsigned char *input, unsigned char *output, size_t len) { mbedtls_aes_context ctx; mbedtls_aes_init(&ctx);

int ret = mbedtls_aes_setkey_enc(&ctx, key, AES_KEY_LEN);
if (ret != 0) {
    mbedtls_aes_free(&ctx);
    return ret;
}

mbedtls_aes_crypt_ecb(&ctx, MBEDTLS_AES_ENCRYPT, input, output);

mbedtls_aes_free(&ctx);
return 0;

}

int aes_decrypt(const unsigned char *key, const unsigned char *input, unsigned char *output, size_t len) { mbedtls_aes_context ctx; mbedtls_aes_init(&ctx);

int ret = mbedtls_aes_setkey_dec(&ctx, key, AES_KEY_LEN);
if (ret != 0) {
    mbedtls_aes_free(&ctx);
    return ret;
}

mbedtls_aes_crypt_ecb(&ctx, MBEDTLS_AES_DECRYPT, input, output);

mbedtls_aes_free(&ctx);
return 0;

}

int main() { const unsigned char key[AES_KEY_LEN / 8] = "0123456789abcdef"; const unsigned char plaintext[16] = "Hello, World!"; unsigned char ciphertext[16]; unsigned char decryptedtext[16];

// 加密
aes_encrypt(key, plaintext, ciphertext, sizeof(plaintext));
printf("Ciphertext: ");
for (int i = 0; i < sizeof(ciphertext); i++) {
    printf("%02x", ciphertext[i]);
}
printf("\n");

// 解密
aes_decrypt(key, ciphertext, decryptedtext, sizeof(ciphertext));
printf("Decrypted text: %s\n", decryptedtext);

return 0;

} 该示例使用mbedtls_aes_context结构体表示AES上下文,并通过aes_encrypt和aes_decrypt函数实现加解密功能。代码使用了256位密钥和16字节明文进行演示,并省略了错误处理和内存分配代码。在实际应用中,需要根据需要进行相应的错误检查和内存管理。

C语言使用mbedTLS库实现AES加解密示例

原文地址: https://www.cveoy.top/t/topic/qEQz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录