STM32 基础系列教程 50 – MbedTls
前言
????? mbed TLS(以前稱為PolarSSL)是TLS和SSL協(xié)議的實(shí)現(xiàn),并且需要相應(yīng)的加密算法和支持代碼。這是雙重許可與Apache許可證?2.0版(與GPLv2許可也可)。網(wǎng)站上指出,mbed TLS的目標(biāo)是“易于理解,使用,集成和擴(kuò)展,核心SSL?庫用C編程語言編寫,并實(shí)現(xiàn)SSL模塊,基本加密功能并提供各種實(shí)用功能。與OpenSSL和TLS的其他實(shí)現(xiàn)不同,mbed TLS設(shè)計(jì)為適合小型嵌入式設(shè)備,最小完整的TLS堆棧需要60KB的程序空間和64KB的RAM。它也是高度模塊化的:每個(gè)組件,如加密函數(shù),可以獨(dú)立于框架的其余部分使用。因?yàn)閙bedTLS是用C編程語言編寫的,沒有外部依賴,也就是說,無論是嵌入式還是桌面軟件版的編程,只要你用的到AES,RSA等加密算法,你都可以直接拿過來源碼放進(jìn)你的工程中,進(jìn)行編譯管理,不用帶著DLL,或者必須安裝一些不必要的庫,并且算法是標(biāo)準(zhǔn)庫,所以你懂得。并且開源。
STM32CUBE里已經(jīng)集成了MBEDTLS, MBEDTLS是ARM公司的開源加密庫,遵守APACHE協(xié)議,大家可以隨便使用MBEDTLS到開源和閉源項(xiàng)目上。其次,除了ECC,MBEDTLS還支持AES系列對(duì)稱加密,支持基于AES的NONCE生成,支持SHA系列摘要算法等,可以應(yīng)用在各種加密場景。
?
示例詳解
基于硬件平臺(tái): 正點(diǎn)源子的stm32f4 探索者開發(fā)板,MCU 的型號(hào)是?STM32F4ZET6, 使用stm32cubemx 工具自動(dòng)產(chǎn)生的配置工程,使用KEIL5編譯代碼。本示例所用的開發(fā)板及部分原理圖:
?
?
?
?
RNG配置(非必需),MbedTls庫要用到隨機(jī)數(shù),剛好在本實(shí)例用到的MCU有RNG處理器,我們這里為MbedTls選擇硬件RNG,當(dāng)然如果MCU不支持的話,這里可以不用管,在MbedTls配置時(shí)選用 軟件RNG即可。
?
特性支持》
模塊(本例會(huì)演示SHA1算法,所以要高啟對(duì)應(yīng)用支持)》
?
?
?
?
c) 編譯工程,調(diào)試程序, (注:在使用探索者F4調(diào)試時(shí),下載或仿真調(diào)試時(shí)先不要PC串口工具連接上開發(fā)板的USB_232接口,有可能導(dǎo)致程序運(yùn)行不了--boot0引腳電平不對(duì),可以先跑起來再在PC串口工具上連接相應(yīng)端口!!,可按下面的具體操作步驟來操作—>>? )
?
串口已打開,程序全速運(yùn)行(F5或單擊全速運(yùn)行圖標(biāo))相看運(yùn)行結(jié)果:
?
這個(gè)時(shí)候可以在串口中看到如下程序運(yùn)行結(jié)果(成功打印出JSON數(shù)據(jù)并成功解析):
為了驗(yàn)證算法執(zhí)行結(jié)果是否正確,我們可以到在線hash計(jì)算網(wǎng)站上驗(yàn)證一下吉果,瀏覽器開打 http://www.kjson.com/encrypt/hash/?fm=map 輸入文本“HeLLo ZhangShiSan!!”查看結(jié)果與我們程序中串口輸出的一致!!
到此本次的基于MbedTls庫的簡單演示操作就完成了,本實(shí)例演示了非對(duì)稱加密ECC算法的公鑰導(dǎo)入操作,對(duì)稱加密算法 AES 的加密碼與解密,HASH算法,sha1,sha256/224的使用,MbedTls庫還支持非常對(duì)的加密算法如RAS等,有興趣的同學(xué)或有實(shí)際應(yīng)用案例的同學(xué)可以好好研究與利用一下。
OK,本期實(shí)驗(yàn)完成!下期見!同時(shí)如果大家有什么疑問或是有想了解的其它內(nèi)容,也歡迎大家留言!!最后喜歡這個(gè)公眾號(hào)的同學(xué)們記得加關(guān)注了,會(huì)有不定期技術(shù)干貨推出!!
?
文中源碼資料下載,在公眾號(hào)里給十三發(fā)消息:
下載|STM32基礎(chǔ)系列教程50
?
關(guān)注十三公眾號(hào)
?
總結(jié)
以上是生活随笔為你收集整理的STM32 基础系列教程 50 – MbedTls的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32 基础系列教程 49 – Ja
- 下一篇: stm32 USB CDC 不接电脑无程