STM32 基础系列教程 47 - MD5
前言
??? MD5消息摘要算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數,可以產生出一個128位(16字節)的散列值(hash value),用于確保信息傳輸完整一致。MD5由美國密碼學家羅納德·李維斯特(Ronald Linn Rivest)設計,于1992年公開,用以取代MD4算法。1991年,Rivest開發出技術上更為趨近成熟的md5算法。它在MD4的基礎上增加了"安全-帶子"(safety-belts)的概念。雖然MD5比MD4復雜度大一些,但卻更為安全。這個算法很明顯的由四個和MD4設計有少許不同的步驟組成。在MD5算法中,信息-摘要的大小和填充的必要條件與MD4完全相同。Den boer和Bosselaers曾發現MD5算法中的假沖突(pseudo-collisions),但除此之外就沒有其他被發現的加密后結果了。
目前MD5廣泛應用于一致性驗證同,數字簽名,安全訪問認證等用途,
對MD5算法簡要的敘述可以為:MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經過了一系列的處理后,算法的輸出由四個32位分組組成,將這四個32位分組級聯后將生成一個128位散列值。?總體流程如下圖所示, 表示第i個分組,每次的運算都由前一輪的128位結果值和第i塊512bit值進行運算:
好了,下面開始進入正題。
?
?
示例詳解
基于硬件平臺: 正點源子的stm32f4 探索者開發板,MCU 的型號是?STM32F4ZET6, 使用stm32cubemx 工具自動產生的配置工程,使用KEIL5編譯代碼。本示例所用的開發板及部分原理圖:
?
?
?
?
?
?
?
? ?
?
?
?
c) 編譯工程,調試程序, (注:在使用探索者F4調試時,下載或仿真調試時先不要PC串口工具連接上開發板的USB_232接口,有可能導致程序運行不了--boot0引腳電平不對,可以先跑起來再在PC串口工具上連接相應端口!!,可按下面的具體操作步驟來操作—>>? )
?
串口已打開,程序全速運行(F5或單擊全速運行圖標)相看運行結果:
?
這個時候可以在串口中看到如下程序運行結果:
到此本次的MD5實驗就順利完成了,從本次實驗可以看到,MD5的算法使用還是比較簡單的,只需用到MD5Init,MD5Update和MD5Final三個接口即可,簡單方便。其中MD5Init為初始化接口,MD5Update為計算接口,MD5Final為獲得結果接口。作為MD5的使用,會用這三個接口即可。該工程算法可直接移植到M0,M3等其它內核心MCU同樣適用。
?
OK,本期實驗完成!下期見!同時如果大家有什么疑問或是有想了解的其它內容,也歡迎大家留言!!最后喜歡這個公眾號的同學們記得加關注了,會有不定期技術干貨推出!!
?
文中源碼資料下載,在公眾號里給十三發消息:
下載|STM32基礎系列教程47
?
關注十三公眾號
?
總結
以上是生活随笔為你收集整理的STM32 基础系列教程 47 - MD5的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32 基础系列教程 46 – RN
- 下一篇: STM32 基础系列教程 48 – CJ