精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

信息摘要算法:簡要分類和一般應用

嵌入式物聯網開發 ? 來源:嵌入式物聯網開發 ? 作者:嵌入式物聯網開發 ? 2022-09-04 10:57 ? 次閱讀

通過本文的閱讀,你將會了解以下幾部分內容:

什么是信息摘要算法

常見的信息摘要算法有哪些以及它們的特性和區別是什么?

信息摘要算法的應用場景有哪些?

什么是信息摘要算法?

信息摘要算法是一種對“信息”進行【摘要化】處理的算法。通俗地來說,就好比本文,假設它很長,那么讀者在第一時間看到它的時候并不會完全閱讀全文,而是往往會先去讀一下文章的【摘要】,通過文章的摘要部分,簡要了解下文章的主要內容。類似地,在信息密碼學領域,同樣有這種的操作,這就是信息摘要算法的產生背景。

假設有一段數據(專業術語叫“消息”),經過【信息摘要算法】處理后,它將變成一段固定長度的【信息摘要】,用公式表示如下,其中M表示消息原文,D表示輸出的消息摘要,P表示信息摘要算法。

P(M with any length) = D(with fixed length)

通過公式,我們可以很直觀地看出,信息摘要算法的輸入數據長度是可以為任意長度,但是在實際使用的過程中,倘若輸入數據的長度過于長,我們會采用將輸入數據塊采用數據分組的方式一步步輸入,最后得到信息摘要結果的輸出。而輸出的信息摘要,通常都是固定長度的,至于信息摘要結果的固定長度是多少,是與具體的摘要算法相關的,下文會詳細介紹各種信息摘要算法的摘要輸出情況。

還有一點,公式中并沒有體現“加密和解密的相互過程”,也就是說【信息摘要算法是單向的,不可逆的】。嚴格來說,它并不是一種【加密】算法,僅僅是【摘要】算法。由于它計算的不可逆性,所以經信息摘要算法計算出來的信息摘要D,一定程度上就代表了信息原文M。倘若有原文M1和原文M2,經過相同的信息摘要算法P,得到相同的信息摘要D,這種情況在密碼學上,我們稱之為【碰撞】。一般而言, 好的摘要算法,沒有人能從中找到【碰撞】或者說極度難找到。雖然【碰撞】是肯定存在的(碰撞即不同的內容產生相同的摘要),但因目前信息科學發達程度非常高,計算機的運算能力得到了前所未有的提升,僅通過計算機運算的暴力破解,某些較弱的信息摘要算法就能被【碰撞】成功。

常見的信息摘要算法

常見的信息摘要算法有:MD2/4/5、SHA1/SHA224/SHA256/SHA384、SM3算法、MAC算法等。

MD(Message Digest):消息摘要

MD算法,是誕生于比較早的消息摘要算法,在網絡應用上也比較常見,比如在某個網站上下載一個文件,通常它會標識該文件的MD5值,當下載者完成下載文件到本地之后,使用工具對下載的文件執行MD5計算,求出一個MD5摘要值,與網站上給出的參考MD5值進行對比;如果兩者相等,則表示下載的文件是可靠的,沒有被篡改過的;反之,如果MD5值對不上,則表明下載的文件是被篡改過的,可能是網絡攻擊者投放的病毒攜帶文件或者是在下載的過程中文件出現了損壞等情況,此時應該對文件進行刪除操作。

MD系列的算法主要有MD2、MD4、MD5,數字值越大表示MD算法的版本越高,從安全性上說:MD5 > MD4 > MD2,自然破解難度MD5是最高的。

MD系列的信息摘要算法,輸出的信息摘要長度都是固定的128bits,即16字節;當不同的信息輸入時,產生的信息摘要也不相同;反之,當信息摘要相同,我們可以認為信息的明文是相同的。

SHA(Secure Hash Algorithm):安全散列

SHA系列的算法從版本上劃分有SHA-1和SHA-2;SHA-1和SHA-2是該算法的兩個不同版本。它們兩者之間在構造上(散列結果是怎樣被原始數據創建出來的)和簽名的位數上都有不同和簽名的位長。你應該把SHA-2看作是SHA-1的繼承者,因為這是一個整體上的改進。

SHA-1就是我們常見到的SHA1;SHA-2主要有SHA224、SHA256、SHA384、SHA512等等,不同的數字代表信息摘要輸出的位數。與MD系列算法類似,數字值越高表示摘要算法的安全性越高,計算的復雜性也越大;但不同于MD算法的是,SHA算法每個算法輸出的信息摘要長度是不一樣的。

SHA1,產生的信息摘要為160bits,即20字節

SHA224,產生的信息摘要為224bits,即28字節

SHA256,產生的信息摘要為256bits,即32字節

SHA384,產生的信息摘要為384bits,即48字節

SHA512,產生的信息摘要為512bits,即64字節

更為詳細的SHA算法介紹,可以參考: SHA算法 - block2016 - 博客園

SM(Shangyong Mima):國密算法,即商用密碼

經查證,國密算法的英文字母縮寫SM,其實是【商用密碼】的中文拼音首字母簡寫。國密即國家密碼局認定的國產密碼算法,即商用密碼。

在國密算法的列表中,SM3算法就是實現了類似MD算法和SHA算法的信息摘要算法。它和其他2種摘要算法一樣,都是不同長度的信息輸入,產生固定長度的摘要輸出。不同的是,它輸出的信息摘要長度固定為256bits,即32字節。在實際使用過程中,SM3算法比較少會單獨使用,而是配合SM2【非對稱加密算法】配合使用,實現數字驗簽和消息驗簽的應用。

MAC(Message Authentication Code):消息認證

MAC算法不同于以上3種信息摘要算法;MAC算法是帶密鑰的Hash函數:消息的散列值由只有通信雙方才知道的秘密密鑰K來控制。此時Hash值稱作MAC。表達公式如下所示,其中M表示信息原文,P表示MAC算法,MAC表示輸出的MAC值,K表示MAC密鑰:

P(M with any length) by K = MAC(with fixed length)

通過公式我們可以發現,計算MAC通常會有KEY的參與,那么在信息安全通訊領域,接收方要想驗證收到的數據是否正確,就需要利用以上公式,輸入MAC密鑰重新計算一遍MAC值,然后對比計算值和收到的MAC值;若相等才認為數據是合法。這里涉及到一個MAC KEY,發送方和接收方對相同的數據進行MAC運算,能得到相同MAC值的前提,除了兩者需使用相同的MAC算法外,還需要保證兩者的MAC KEY是一致的(通常計算MAC采用的是對稱加密算法)。至于,在實際生產應用過程中,如何保證兩者的MAC KEY是一致的,或者說MAC KEY是如果從一方傳遞到另一方的,這又是另一個話題,這種應用場景,在POS機與銀行后臺信息交互的安全性,就是利用MAC KEY的。

MAC算法是一個統稱,它很多種實現,在POS行業,常用的MAC算法有CUP模式、EMV2000模式、或者自定義形式的MAC算法。MAC算法的核心是如何將輸入數據分組,利用MAC KEY做一些XOR、移位、加密等操作,使得輸入數據散列化,最后再利用MAC KEY執行加密操作(通常為對稱加密)得到MAC值。

值得注意的是,雖然MAC算法有MAC KEY的參與,但是它計算過程依然是單向的,不可逆的,這也是為什么會把它歸為【信息摘要算法】的主要原因。

信息摘要算法 信息輸入長度 摘要輸出長度 密鑰 安全性
MD5 * 128bits(16字節) 低,有被碰撞的可能性
SHA1 * 160bits(20字節) 低,有被碰撞的可能性
SHA224 * 224bits(28字節) 較高
SHA256 * 256bits(32字節) 高,推薦使用,最長使用
SHA384 * 384bits(48字節) 高,推薦使用
SHA512 * 512bits(64字節) 高,高安全性場景下推薦使用
SM3 * 256bits(32字節) 高,推薦使用
MAC算法 * 視不同的MAC算法而不同 有的是8字節,有的是16字節 高,除非密鑰被破解
注:表中表示輸入長度為“任意值”;此處的任意值,通常也是有限制的,比如SHA256,應小于2的64次方,而SHA512,*應小于2的128次方。

信息摘要算法的應用場景

信息摘要算法的應用場景只要有以下幾種:

網絡文件下載

前面也簡單提到了,在網絡文件下載的時候,通常會有附上對應下載文件的摘要值,常用的是MD5或SHA1值;這個主要目的是給下載者在下載完網絡文件后,做最后的文件正確性和完整性的確認。如果計算出來的摘要值,與網站上的摘要不相等,我們應認為下載的文件是不可信任的,應當做刪除處理。

數字簽名和信息驗簽

在產生數學簽名的過程中,通常會有一步是對輸入數據原文做摘要運算,這樣做的主要目的是將輸入數據原文迷你化。由于經摘要算法處理后,信息摘要的長度都是一定的,所以在做簽名運算的時候,只需要對信息摘要做簽名運算,在一定程度上就是輸入信息的原文做簽名運算。輸入數據簽名后,發送方會將簽名數據附在輸入信息的尾部,一同發送給接收方。而在驗簽流程中,接收方收到發送方的信息原文和簽名值,首先需要做的是根據雙方協商的信息摘要算法,做同樣的摘要運算,得到摘要值M',然后使用密鑰對簽名數據進行解密運算,得到發送方的摘要M;如果M' = M,則表示驗簽通過,接收的數據是可任性的。

關于數字簽名的具體細節,后續會有更為詳細的文章做更進一步的介紹,比如常見的簽名算法是怎么工作的,等等。

安全報文傳輸

這種應用場景,主要是MAC算法的應用,最常見的就是POS與銀行后臺的報文傳輸。由于涉及到金融風險,所以在POS機與銀聯后臺通訊的過程中,除了對個人賬戶的敏感信息(如卡號、卡密碼)等做加密處理外,還需要對整一個通訊報文做MAC計算,在發送報文的時候,MAC值附在原始的密文后面以供接收方對接收的密文做MAC校驗。至于為何要這樣做,就是為了保證通訊報文的其他信息要素不能被篡改,比如消費的金額。試想下,如果你在超市消費了1.00元,但是由于報文被截取了,攻擊者將報文中的消費金額篡改為100.00元;這種情況下,除非報文攻擊者拿到了POS與銀行后臺通訊的MAC KEY,否則它計算出來的MAC值必定與銀行后臺計算的MAC值對不上,進而被銀行后臺當做非法報文,做丟棄處理。但如果銀行后臺沒有MAC值校驗這一步操作,那么對于消費者而言,就是明明消費了1.00元卻被扣款100.00元;這個后果將變得不堪設想。

本文對常見的信息摘要算法進行一番總結,閱讀了本文后,相信讀者對信息摘要算法都有了更為清晰的認識,同時對各個摘要算法之間的區別也有一定的了解。文中提及的觀點,難免有紕漏之處,還望有心的讀者誠心提出改進意見,互相學習,互相進步。感謝。

審核編輯 黃昊宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4601

    瀏覽量

    92660
  • 嵌入式技術
    +關注

    關注

    10

    文章

    360

    瀏覽量

    35667
收藏 人收藏

    評論

    相關推薦

    退耦電容一般用多大

    退耦電容的容量選擇并不是成不變的,而是需要根據具體的電路設計需求和工作條件來確定。以下是對退耦電容容量選擇的一般原則和考慮因素: 一般
    的頭像 發表于 09-26 11:28 ?328次閱讀

    一般繼電器需要多少電流才能驅動

    一般繼電器所需的驅動電流會根據其型號、規格和額定工作電壓等因素有所不同。通常,繼電器需要定的電流來驅動其線圈產生磁場,從而使觸點閉合或斷開。以下是對繼電器驅動電流的一般性說明:
    的頭像 發表于 09-05 15:18 ?2265次閱讀

    Arinc 429 發送數據一般是什么

    Arinc 429 發送數據一般是什么
    發表于 07-23 09:46

    卷積神經網絡的一般步驟是什么

    卷積神經網絡(Convolutional Neural Network,簡稱CNN)是種深度學習算法,廣泛應用于圖像識別、視頻分析、自然語言處理等領域。本文將詳細介紹卷積神經網絡的一般步驟,包括
    的頭像 發表于 07-03 09:11 ?915次閱讀

    PLC的工作電源一般是多少

    在工業自動化領域中,PLC(Programmable Logic Controller,可編程邏輯控制器)扮演著至關重要的角色。PLC作為工業自動化系統的核心控制設備,其工作電源的穩定性和適應性直接關系到整個系統的正常運行。本文將深入探討PLC的工作電源一般是多少,并從多個角度進行詳細的闡述和解釋。
    的頭像 發表于 05-28 16:41 ?3595次閱讀

    表面安裝設計和地面圖案標準的一般要求

    電子發燒友網站提供《表面安裝設計和地面圖案標準的一般要求.pdf》資料免費下載
    發表于 02-21 09:24 ?2次下載

    車載UPS與一般UPS區別在哪里?車載有哪些優勢特點?

    車載UPS與一般UPS區別在哪里?車載有哪些優勢特點? 車載UPS是種特殊的不間斷電源系統,專門設計用于車輛上使用的電子設備。與一般的UPS相比,車載UPS有些獨特的特點和優勢。下
    的頭像 發表于 01-11 14:43 ?1233次閱讀

    定位系統為步進電機+光柵尺的全閉環系統,位置補償算法一般都采用哪些呢?

    如題,定位系統為步進電機+光柵尺的全閉環系統,麻煩問下各位大佬位置補償算法一般都采用哪些呢?PID嗎?重復精度需要提高到10幾微米左右,求助求助
    發表于 01-09 08:01

    伺服電機效率一般是多少?

    伺服電機效率一般是多少?選型時也得考慮到這個問題吧? 變頻電機一般都標功率因素,指的就是電機實際的輸出功率吧? 異步伺服效率 88%; 同步伺服效率 100%,采用絕對值編碼器時效率下降10%-20%.
    發表于 12-28 06:46

    一般AD芯片數字口的輸出阻抗是多少?

    一般AD芯片數字口的輸出阻抗是多少,比如高電平輸出下輸出阻抗值和低電平輸出下的輸出阻抗值,是集中在20幾歐姆么。芯片手冊上也沒有提供相關的信息
    發表于 12-19 07:10

    pcb設計一般流程步驟

    pcb設計一般流程步驟
    的頭像 發表于 12-13 17:30 ?3877次閱讀

    【科普小貼士】按結構分類的MOSFET特性摘要

    【科普小貼士】按結構分類的MOSFET特性摘要
    的頭像 發表于 12-13 14:15 ?372次閱讀
    【科普小貼士】按結構<b class='flag-5'>分類</b>的MOSFET特性<b class='flag-5'>摘要</b>

    數混合信號器件的一般接地原則

    電子發燒友網站提供《數混合信號器件的一般接地原則.pdf》資料免費下載
    發表于 11-29 10:45 ?1次下載
    數混合信號器件的<b class='flag-5'>一般</b>接地原則

    一般汽車應用中的噪底主要產生源是什么?降低這些噪底有啥方法?

    用于汽車音頻系統設計,經常會出現噪底太大,產生人耳在安靜的環境下就能感受到的雜聲,能不能以反傾銷 1401為例幫分析下我們一般汽車應用中這種噪底主要產生源?降低這些噪底有啥一般有效的方法?例如結合吉瑪斯圖軟件算法
    發表于 11-29 07:51

    開發java程序的一般步驟是

    開發Java程序的一般步驟通常包括需求分析、設計、編碼、測試和部署等階段。下面將詳細介紹Java程序開發的一般步驟。 需求分析階段: 在開始開發Java程序之前,首先需要進行需求分析。需求分析是確定
    的頭像 發表于 11-28 16:43 ?1578次閱讀