基于MbedTLS的AES加密实现,含STM32H7和STM32F4的实现例程

Posted armfly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于MbedTLS的AES加密实现,含STM32H7和STM32F4的实现例程相关的知识,希望对你有一定的参考价值。

说明:

1、mbedTLS的前身是PolarSSL,开源免费。

主要提供了的SSL/TLS支持(在传输层对网络进行加密),各种加密算法,各种哈希算法,随机数生成以及X.509(密码学里公钥证书的格式标准)的支持。

2、mbedTLS支持的加密算法含对称加密和非对称加密

(1)mbedTLS支持的对称加密算法有:AES,ARCFOUR,Blowfish/BF,Camellia,DES/3DES,GCM,XTEA       

加密和解密用到的密钥是相同的,加密速度快,适合数据收发通信,缺点是密钥的传输略麻烦。  

(2)mbedTLS支持的非对称加密算法有:Diffie-Hellman-Merkle,RSA,Elliptic Curves over GF(p),Elliptic Curve Digital Signature Algorithm (ECDSA)和Elliptic Curve Diffie Hellman (ECDH)

加密和解密用的密钥是不同的,加密的速度慢,适合密钥的传输。

3、关于AES加密,简单的说就是下面图示,由密钥和要解码的数据,通过算法生成密文,然后发给接受者,接受者使用相应的密钥解密数据。

技术图片

4、现在研究下这个,主要是方便后面新版RL-TCPnet V7.X教程和对应的物联网教程做好铺垫。
技术图片

例子说明:

1、使用的256bit AES加密。

2、mbedTLS支持密钥种子和密钥的生成,其中密钥种子函数提示要在Windows或者unix平台才可以使用,所以程序里面直接用的密钥生成函数。

3、例子是采用AES的CBC模式,这种模式每次固定加密或解密16个字节的数据,不足16个时,补0。由于mbed的API做了封装,每次可以处理16字节的整数倍。

4、特别注意CBC模式有个初始化表IV,也是16个字节。大家使用的时候要保证加密端和接收端一致。

例程下载:

链接:https://pan.baidu.com/s/1pv3hogesXA2lESDtq2Ur5g   提取码:gnaw

技术图片

技术图片

安装最新的mbedTLS软件包:
  技术图片

技术图片

测试效果:

技术图片

以上是关于基于MbedTLS的AES加密实现,含STM32H7和STM32F4的实现例程的主要内容,如果未能解决你的问题,请参考以下文章

使用mbedtls的使用说明和AES加密方法(原来的PolarSSL)

mbedtls 和 openssl 之间的不同 AES-256 加密输出

如何正确使用来自 mbedtls 的 aes cbc api

MbedTLS AES 128 在 Java 中加密和解密

STM32H7第16章 ThreadX原装任务统计分析功能实现(含IAR的ThreadX插件使用)

STM32H7第16章 ThreadX原装任务统计分析功能实现(含IAR的ThreadX插件使用)