前言

mbed TLS(以前称为PolarSSL)是TLS和SSL协议的实现,并且需要相应的加密算法和支持代码。这是双重许可与Apache许可证 2.0版(与GPLv2许可也可)。网站上指出,mbed TLS的目标是“易于理解,使用,集成和扩展,核心SSL 库用C编程语言编写,并实现SSL模块,基本加密功能并提供各种实用功能。与OpenSSL和TLS的其他实现不同,mbed TLS设计为适合小型嵌入式设备,最小完整的TLS堆栈需要60KB的程序空间和64KB的RAM。它也是高度模块化的:每个组件,如加密函数,可以独立于框架的其余部分使用。因为mbedTLS是用C编程语言编写的,没有外部依赖,也就是说,无论是嵌入式还是桌面软件版的编程,只要你用的到AES,RSA等加密算法,你都可以直接拿过来源码放进你的工程中,进行编译管理,不用带着DLL,或者必须安装一些不必要的库,并且算法是标准库,所以你懂得。并且开源。

STM32CUBE里已经集成了MBEDTLS, MBEDTLS是ARM公司的开源加密库,遵守APACHE协议,大家可以随便使用MBEDTLS到开源和闭源项目上。其次,除了ECC,MBEDTLS还支持AES系列对称加密,支持基于AES的NONCE生成,支持SHA系列摘要算法等,可以应用在各种加密场景。

示例详解

基于硬件平台: 正点源子的stm32f4 探索者开发板,MCU 的型号是 STM32F4ZET6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。本示例所用的开发板及部分原理图:

  1. 关于CUBEMX工具及KEIL工具的操作将不再细讲,如果还有不熟悉的可以查看之前的教程文档。下面直接介绍工程配置:
  1. 系统时钟树

  1. 串口配置(用于程序调试)

  1. RCC配置

  1. SYS配置

RNG配置(非必需),MbedTls库要用到随机数,刚好在本实例用到的MCU有RNG处理器,我们这里为MbedTls选择硬件RNG,当然如果MCU不支持的话,这里可以不用管,在MbedTls配置时选用 软件RNG即可。

  1. Rtc配置(非必需),MbedTls库用到时有时候需要时间支持,当然也可以在配置时不定义MBEDTLS_HAVE_TIME或用户在实现time函数时来个空实现。本例我们将定义MbedTls库的MBEDTLS_HAVE_TIME特性,并利用RTC来实现时间获取。

  1. MbedTls库配置(也可以用KEIL MDK自带的库,操作方式类似于第48,49讲中的CJSON和Jansson库的使用)

特性支持》

模块(本例会演示SHA1算法,所以要高启对应用支持)》

  1. 引脚配置,用到引脚极少

  1. 堆栈配置(堆要大些):

  1. 工程代码

    1. 找到mbedtls.c文件,按下图所示在对应区域加入代码(演示EC非对称加密公钥导入):

  1. 在main.c 中main函数中USER CODE BEGIN Includes、USER CODE0, USER CODE1、USER CODE 2, USER CODE 4 区域加入如下图所示代码:

c) 编译工程,调试程序, (注:在使用探索者F4调试时,下载或仿真调试时先不要PC串口工具连接上开发板的USB_232接口,有可能导致程序运行不了--boot0引脚电平不对,可以先跑起来再在PC串口工具上连接相应端口!!,可按下面的具体操作步骤来操作—>>  )

串口已打开,程序全速运行(F5或单击全速运行图标)相看运行结果:

这个时候可以在串口中看到如下程序运行结果(成功打印出JSON数据并成功解析):

为了验证算法执行结果是否正确,我们可以到在线hash计算网站上验证一下吉果,浏览器开打 http://www.kjson.com/encrypt/hash/?fm=map 输入文本“HeLLo ZhangShiSan!!”查看结果与我们程序中串口输出的一致!!

到此本次的基于MbedTls库的简单演示操作就完成了,本实例演示了非对称加密ECC算法的公钥导入操作,对称加密算法 AES 的加密码与解密,HASH算法,sha1,sha256/224的使用,MbedTls库还支持非常对的加密算法如RAS等,有兴趣的同学或有实际应用案例的同学可以好好研究与利用一下。

OK,本期实验完成!下期见!同时如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,会有不定期技术干货推出!!

文中源码资料下载,在公众号里给十三发消息:

下载|STM32基础系列教程50

关注十三公众号

STM32 基础系列教程 50 – MbedTls相关推荐

  1. STM32 基础系列教程 5 – 系统定时器

    前言 学习stm32 systime的使用,用基本定时器产生定时1ms定时中断,用于参生1ms系统时钟节拍,并实现将1ms 节拍改成500us 或其它时间功能.并实产生的时间节拍为机基准实现控制LED ...

  2. STM32 基础系列教程 4 – 基本定时器

    前言 学习stm32 基本定时器的使用,用基本定时器产生定时500ms定时中断,控制LED闪烁. 示例详解 基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c ...

  3. STM32 基础系列教程 3 – 外部中断

    前言 学习stm32 GPIO 的外部中断使用,用中断模式实现简单的按键输入功能,用按实现基础实验二中的LED亮灭切换功能! 示例详解 基于硬件平台: STM32F10C8T6最小系统板, MCU 的 ...

  4. STM32 基础系列教程 2 - GPIO 按键输入

    前言 学习stm32 GPIO 的使用,实现简单的按键输入功能,用按键的高低来控制LED的亮灭! 示例详解 基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c ...

  5. STM32 基础系列教程 1- CubeMX+GPIO

    前言 学习stm32 GPIO 的使用,设置某一GPIO引脚为输出功能,将对应引脚拉高或拉低输出,同时学会初步认识STM32最新的HAL库的使用, 用代码实现控制GPIO引脚输出产生周期出1s 占空比 ...

  6. STM32 基础系列教程 49 – Jansson

    前言 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全 ...

  7. STM32 基础系列教程 48 – CJSON

    前言 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全 ...

  8. STM32 基础系列教程 47 - MD5

    前言 MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信 ...

  9. STM32 基础系列教程 46 – RNG

    前言 随机数发生器(RNG)是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个 32 位的随机数.STM32F407自带RNG ,本节将给大演示STM32F4系列MCU中的RNG的使用.用 ...

最新文章

  1. enter对应的keycode_键盘对应数字-keycode值大全
  2. 两个提高javascript执行效率的简易代码分享给大家
  3. 访问tomcat html,访问云服务器tomcat里html界面
  4. 【强烈推荐】程序猿们,九度Online Judge开始举办月赛啦!!会编程才是王道!!!!!
  5. DB2中admin_cmd执行load
  6. 计算机科学技术专业解析,专业解读—计算机科学与技术
  7. 花书+吴恩达深度学习(二六)近似推断(EM, 变分推断)
  8. 【bootloader】bootloader启动过程分析
  9. PHP上传文件大小和时间限制
  10. Java疯狂讲义读书笔记第一章
  11. 《高等代数学》(姚慕生),复习题一,第1题
  12. 计算机520错误,完美解决win7遇到已停止工作问题
  13. Java:javax.mail通过163服务器发送邮件
  14. python开发工程师招聘要求
  15. 解决Windows XP 系统下,用户登录一直循环提示激活
  16. 杂记——记录一次参加华为OD研发岗位的面试过程
  17. 北京理工大学 计算机考研真题,北京理工大学考研真题汇总
  18. python 英语翻译_python中英文翻译
  19. HDOJ3018欧拉路,几笔画判断
  20. 2020年8月Java语言程序设计(一)试题及答案

热门文章

  1. Django的quarySet
  2. android 字符串,textview
  3. 生活中的实验 —— 磁铁的使用
  4. js全局变量和局部变量
  5. SQL中JOIN 的用法
  6. CFBundleVersion与CFBundleShortVersionString
  7. 从圆的面积说起 循环小数 PI
  8. 关于谷歌自动换行的奇异效果
  9. ubuntu amd 64bit 安装 QQ for linux教程(附 不能使用中文的解决办法)
  10. DevCon工具基本使用