STM32 基础系列教程 50 – MbedTls
前言
????? 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編譯代碼。本示例所用的開發板及部分原理圖:
?
?
?
?
RNG配置(非必需),MbedTls庫要用到隨機數,剛好在本實例用到的MCU有RNG處理器,我們這里為MbedTls選擇硬件RNG,當然如果MCU不支持的話,這里可以不用管,在MbedTls配置時選用 軟件RNG即可。
?
特性支持》
模塊(本例會演示SHA1算法,所以要高啟對應用支持)》
?
?
?
?
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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32 基础系列教程 49 – Ja
- 下一篇: STM32 进阶教程 1 - micro