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

文章正文
发布时间:2024-10-22 03:50

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的实现例程

上一篇:基于STM32的无损压缩算法miniLZO移植
下一篇:【STM32H7教程】第32章 STM32H7的TIM定时器基础知识和HAL库API

推荐阅读最新更新时间:2024-10-13 18:19

STM32F407串口的基本使用

串口 串口在嵌入式系统中是一个非常重要的外设,它通信方式简单在软件开发阶段常用作调试工具。本示例中我们只实现串口的输出功能,同时还 会实现一个具有printf功能输出接口。这样咱们以后的例程中就有了一个简单的调试工具。 1. STM32串口简介 STM32的串口功能非常丰富,它可以支持双全工异步通信、LIN、IrDA、智能卡协议、单线半双工通信、支持调制解调器操作。 接下来我们将对使用STM32的串口应该进行的哪些设置给予简单说明,并对需要设置的寄存器给予简单介绍。要使用串口除了应对串口的波特率等进行配置外还需要对串口用到I/O进行设置,下面将分步进行介绍: 1) 串口时钟使能 STM32可以对每个外设进行单独的时钟控制,因此配置

[单片机]

STM32F4学习笔记2——时钟与复位系统

STM32F4采用了三种不同的时钟用来驱动系统时钟(SYSCLK) ·HSI振荡器时钟(内部时钟) ·HSE振荡器时钟(外部时钟) ·PLL时钟(锁相环时钟) 这些设备有以下两种二级时钟源 ·32kHz低速内部RC,可用于驱动独立看门狗和通过程序选择驱动RTC。RTC用于从停机/待机模式下自动唤醒系统。 ·32.768kHz低速外部晶振也可以用来通过程序选择驱动RTC(RTCCLK)。 AHB总线最高支持168MHz的时钟,通过AHB总线分频APB2最高支持84MHz,APB1最高支持42MHz。 所有外设驱动全部来至于SYSCLK除了下面几个: ·USB OTG FS时钟48MHz,随机信

[单片机]

STM32F4——RTC实时时钟

一、简介: 对于STM32F的RTC实时时钟提供了一个日历时钟,两个可编程闹钟中断和一个具有中断功能的可编程唤醒标志。由于RTC的时钟配置是在后备区域,因此在后备区域供电正常的情况下,即使是系统复位或者是从待机模式唤醒之后时间依然维持不变。下边就以RTC模块的框图为引线,对RTC的相关功能和操作做相关介绍。 二、框图: 首先是时钟的选择,一般选择LSE作为时钟来源,频率32768Hz,随后经过一个7位的异步预分频(默认值为127+1)和一个15位的同步预分频(255+1),得到1Hz的时钟频率,对于日历的配置,寄存器RTC_TR用来配置时间(时分秒),寄存器RTC_DR用来配置日期(年月日和星期),由于寄存器RTC

[单片机]

STM32F4——RTC实时时钟

STM32F429之LTDC驱动图解

本文基于ST官方demo板STM32F429 Discovery硬件平台,以看图说话的形式给大家讲解LTDC的主要参数配置。关于本文提到的代码部分均摘自本人另一片文章《 STM32F429之LTDC代码模板 》,LCD硬件为240x320,驱动IC为ili9341。本文目的意在让大家通过几张图就能掌握STM32F429 LTDC控制器的配置要领,而从干涩的文字中解脱出来,方便记忆。当然本文只是讲解了LTDC一些常用的设置,关于更多细节的操作还是得参照ST的官方datasheet。 一、关于LTDC外设的时钟配置,只需要记住下面这张图就可以了(图片来源于STM32CubeMX RCC时钟树): 该图所对应的代码如下: /*

[单片机]

STM32F407 ADC DMA 采样实验

最近公司又做了一款407的样板,正好需要用到407的ADC功能,需要用PC.2来检测RFID芯片的射频电源功率,首先看了下407的数据手册 iframe src="" center">

STM32F407 ADC DMA 采样实验

FreeRTOS+Lwip+STM32F407移植笔记

移植步骤: 1 - 先移植FreeRTOS的Demo; 2 - 再移植Lwip的文件(源码&sys_arch&lwip_comm); 3 - 单个实现TCPIP协议栈任务:TCP客户端、TCP服务器和UDP; 模块: - 内存管理:需要给 以太网驱动 、 FreeRTOS 、 Lwip 三个部分分配内存; - 以太网DMA描述符&以太网DMA Buffer - Lwip的RAM部分:ram_heap&内存池部分:memp; - FreeRTOS占用RAM由配置文件定义大小,用于操作系统中动态操作的分配; - 另外原子实现的内存管理方式中的内存管理表也会占用很大内存,与内存块大小密切相关;

[单片机]

FreeRTOS+Lwip+STM32F407移植笔记

【stm32f407】NVIC

NVIC称之为“嵌套向量中断控制器:Nested Vectored Interrupt Controller (NVIC)“。 CM4内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。但STM32F4并没有使用CM4内核的全部东西,而是只用了它的一部分 STM32F40xx/STM32F41xx总共有92个中断,STM32F42xx/STM32F43xx则总共有96个中断,以下仅以STM32F40xx/41xx为例讲解。 STM32F40xx/STM32F41xx的92个中断里面,包括10个内核中断和82个可屏蔽中断,具有16级可编程的中断优先级,而我们常用的就是这82

[单片机]

【stm32f407】NVIC

STM32F4 uart have dma trouble

首先有一个概念,DMA1_FLAG_TC4 ,是指DMA传输完成的中断标DMA传输完成以后,产生一个DMA1_FLAG_TC4的标志,但是一旦CLEAR了以后,DMA_GetFlagStatus(DMA1_FLAG_TC4) == RESET 就永远为真了。所以你的代码有时候能够走下去,有时候陷入这个While循环中,之所以陷入循环中是因为在中断中Clear了这个标志了。所以Main函数中再也检测不到了。如果这个地方想等待DMA发送结束的话,可以用一个标志位,中断函数中设置这个标志位,Main函数中可以一直等待这个标志位就行了志,只会产生一次,也就是你的数据全部传输完的时候,并不是没法送一个自己产生一次。 即使 不中断设置 也

[单片机]