一、安装mbedtls
- 转到keil官网http://www.keil.com/dd2/pack/
- 找到ARM mbed Cryptographic and SSL/TLS library for Cortex-M devices并下下载
- 安装下载的ARM.mbedTLS.1.6.0.pack文件
二、加载mbedtls
- 加载mbedtls
- 修改mbedTLS_config.h文件。需要启用的宏如下。
#define MBEDTLS_AES_ROM_TABLES #define MBEDTLS_CIPHER_MODE_CBC #define MBEDTLS_AES_C
三、应用mbedtls
此处我用的ECB模式的加密即可满足我的需要,所以应用了ECB模式。但是ECB模式只能实现16字节加密解密,如有需要更长字节请使用CBC模式。
#include "sys.h"
#include "delay.h"
#include "mbedtls/aes.h"
//密钥
unsigned char key[16] = "520199112301234";
//明文
unsigned char plain[16] = "DaoBanMoJieYJW";
//密文
unsigned char cipher[16] = {0};
//解密后的明文
unsigned char plain_decrypt[16] = {0};
mbedtls_aes_context aes;
int main(void)
{
delay_init(168);
mbedtls_aes_init(&aes); //初始化
while(1)
{
mbedtls_aes_setkey_enc(&aes, key, 128); //设置加密密钥
mbedtls_aes_crypt_ecb(&aes, MBEDTLS_AES_ENCRYPT, plain, cipher);//ECB加密
mbedtls_aes_setkey_dec(&aes, key, 128);//设置解密密钥
mbedtls_aes_crypt_ecb(&aes, MBEDTLS_AES_DECRYPT, cipher, plain_decrypt);//ECB解密
delay_ms(500);
}
}
四、对比验证
随意找一个在线AES加密的。例如https://the-x.cn/cryptography/Aes.aspx
输入之前的明文和密钥
密钥 "520199112301234"
明文 "DaoBanMoJieYJW"
验证结果:
两个加密结果一致!!!