历史上的今天

今天是:2024年08月26日(星期一)

正在发生

2019年08月26日 | 基于MbedTLS的AES加密实现,含STM32H7和STM32F4的实现例程

发布者:龙爱泉也 来源: eefocus关键字: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加密实现,含STM32H7和STM32F4的实现例程

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

推荐阅读

SPI(Serial Peripheral Interface--串行外设接口) 总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。 SPI是Freescale(原 Motorola)公司首先在其处理器上定义的。 SPI是一种高速、主从式、全双工、同步传输的通信总线,SPI总线在物理层体现为四根传输线:MOSI (Master Output Slaver Input) – 主...
31.1 初学者重要提示学习本章节前,务必优先学习第30章,RS485用到的串口FIFO也是建立在30章的基础上。了解了本章31.2和31.3小节的基础知识后,强烈推荐看此贴的两个文档,对RS485讲解的比较透彻,中文版:http://forum.armfly.com/forum.php?mod=viewthread&tid=90753 。STM32H7支持RS485的硬件流控制,即有一个专门的引脚来控制485 PHY的收发状态切换...
  1 引言  单片机(或微控制器)技术已渗透到生活的方方面面,广泛应用于家用电器、通信、测试等领域。因此该技术正积极影响着人们的生活。这里给出一种基于 MSP430单片机的测试系统设计。MSP430系列单片机是TI公司生产的超低功耗混合信号控制器,其灵活的时钟源选择可最大限度的延长电池寿命,内部集成有丰富的外围模块,该系列单片机不同型号针对不...
/********** mySpi.h****************/#ifndef __MY_SPI_H#define __MY_SPI_H#include "stm32f10x.h"#include <stdio.h>#define SPI1_CSN_HIGH() GPIO_SetBits(GPIOA,GPIO_Pin_1);#define SPI1_CSN_LOW() GPIO_ResetBits(GPIOA,GPIO_Pin_1);#define SPI2_CSN_HIGH() GPIO_SetBits(GPIOB,GPIO_Pin_12);#define SPI2_CSN_LOW() GPIO_ResetBits(...

史海拾趣

问答坊 | AI 解惑

传输线的一些概念

连接天线和发射机输出端(或接收机输入端)的电缆称为传输线或馈线。传输线的主要任务是有效地传输信号能量,因此,它应能将发射机发出的信号功率以最小的损耗传送到发射天线的输入端,或将天线接收到的信号以最小的损耗传送到接收机输入端,同时 ...…

查看全部问答∨

一个要崩溃的问题!急!!!

大家好! 和大家探讨一个问题,着个问题是我从来没有经历过的,很费解! 电路图附在附件上,很简单,主要是共阳显示,单片机即使是送静态显示,LED始终是全亮,如果把段码写成全 暗,仍然是全亮!现在在怀疑是单片机是不是烧坏了,但是单片机 ...…

查看全部问答∨

解释一下单片机的源文件,急急急!!!

    把内部RAM中20H单元中的1个字节十六进制数转换为2位ASCII码,存放在R0指示的两个单元中 MAIN:MOV   A,20H    ;                  SWAP  ...…

查看全部问答∨

请问怎样确定一台机子的系统是什么,是否支持gapi?

现在手上有个gps终端 想确定它是wince还是wmb 请问怎么确定? 怎么确定系统支不支持GAPI?  谢谢!…

查看全部问答∨

nand flash驱动问题

最近我拿到一个新的开发板,发现,往nand flash拷贝几十M的数据进去,断电再启动后, 1,系统启动的时间变慢(看了启动串口输出,是卡在nand flahs部分) 2,产生了FILE00001.CHK之类的文件,而且拷贝,断电再启动的次数越多,之类文件产生的越多 ...…

查看全部问答∨

如何用codewarrior+usb_tap 调试MPC827x的BSP包?

刚开始学习开发bsp包,手上有MPC827x+codewarrior+usb_tap,弄了半天还是没有头绪,请做过的给个建议! 先谢谢了! 我的思路是这样,先根据codewarrior的配置文件连上cpu,这是flash和sdram都初始化好了,然后再调串口,加中断,local bus,pci等 ...…

查看全部问答∨

虚拟机进BIOS

VMware 的启动速度变得太快了,根本来不及按F2进BIOS设定,大家有办法解决一下吗?…

查看全部问答∨

一个菜问题

请问一下  如果pdiusbd2接受到setup包后,为什么是中断寄存器的0位(控制输出端点)被置位呢?我觉得应该是位1(控制输入端点)被置位吧?因为从语义上来看应该是接受到了setup包啊…

查看全部问答∨

哪里可以买到STM32的芯片?

                                 零售的,哪里有卖?&nbsp;想自己做个板玩玩…

查看全部问答∨

一个zigbee代码找不到main,无法下手,请高手指点!

本人使用的是cel公司的zic2410芯片,代码是原厂提供的关于zigbee组网(本人没有改过)。 现在打开后找不到man函数,当我点击“start debug”后,出现了以下的汇编“main”函数 ,可是程序框中也没有对应的程序。 在左边的project栏里,除了c文件 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved