您好,登錄后才能下訂單哦!
這篇文章主要講解了“什么是NIST和SHA算法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“什么是NIST和SHA算法”吧!
在密碼學中,SHA-1(Secure Hash Algorithm 1)是一種加密哈希函數,它接受一個輸入,并產生一個 160 位(20 字節)的哈希值,稱為信息摘要。
我們先看下 SHA1 的加密流程圖:
上面的 A,B,C,D,E 都是 32bits 的 state。
F 是一個非線性函數。
<<< 表示額是左移操作,紅色的加號表示的是加法然后對 232取模。
SHA1 算法很簡單,在 2005 年之后,SHA1 被認為是不安全的,截至 2010 年,許多組織都建議更換 SHA-1。
NIST 在 2011 年正式廢止了 SHA-1 的使用,并在 2013 年不允許將其用于數字簽名。
所有主要的網絡瀏覽器廠商在 2017 年都停止接受 SHA-1 SSL 證書。
SHA-2(Secure Hash Algorithm 2)也是由美國國家安全局(NSA)設計的一組加密哈希函數,于 2001 年首次公布,它們采用 Merkle-Damg?rd 結構。
SHA-2 和 SHA-1 相比,包括了重大的變化。SHA-2 系列包含六個哈希函數,分別是 SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。
我們看下 SHA2 的算法流程:
我們看下這幾個函數表示什么意思:
2006 年,NIST 組織了 NIST 哈希函數競賽,以創建一個新的哈希標準 SHA-3。SHA-3 并不是要取代 SHA-2,因為目前還沒有證明對 SHA-2 的重大攻擊。但是由于 MD5、SHA-0 和 SHA-1 的成功攻擊,NIST 認為需要一種可替代的、不同的加密哈希,這就是 SHA-3。
在這個比賽中,最終 Keccak 算法勝出,被選為 SHA3 的標準。
SHA3 算法是基于海綿結構的,我們看下海綿結構的工作原理:
這個函數被分成了兩部分,左邊部分叫做吸收部分,右邊部分叫做輸出部分,一吸一出,像是海綿一樣,所以叫做海綿函數。
P 表示的是輸入的字符串,Z 表示的時候輸出字符串。
一個海綿函數由三部分組成,分別是 state, 函數 f 和填充函數 pad。
state 就是上圖的 r+c 部分,r 被稱為 Bitrate, c 被稱為 Capacity。
P 被分成 n 份,每一份都會跟 Bitrate 進行異或操作,如果 P 的長度不是 Bitrate 的整數倍,那么需要使用 Pad 函數進行填充。
每一輪,Bitrate 跟 P 進行異或操作的結果作為最新的 Bitrate, 然后生成新的 state,然后這個 state 又被 f(state)來替換。
其中函數 f 是 從 n 個{0,1} 到 n 個{0,1}的映射。
就這樣一輪一輪進行下去,直到所有的 P 都參與了運算。
輸出部分是將最終生成的 state 進行 f 運算,每次運算都取 Bitrate 部分作為輸出,從而得到最終的輸出。
感謝各位的閱讀,以上就是“什么是NIST和SHA算法”的內容了,經過本文的學習后,相信大家對什么是NIST和SHA算法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。