一、安裝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"
驗證結果:
兩個加密結果一致!!!