STM32使用mbedtls的AES加密

一、安裝mbedtls

  1. 轉到keil官網http://www.keil.com/dd2/pack/
  2. 找到ARM mbed Cryptographic and SSL/TLS library for Cortex-M devices並下下載ARM mbed Cryptographic and SSL/TLS library for Cortex-M devices
  3. 安裝下載的ARM.mbedTLS.1.6.0.pack文件

            

 二、加載mbedtls

  1. 加載mbedtls

  2. 修改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"

驗證結果:

兩個加密結果一致!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章