溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

單向散列函數(shù)怎么實現(xiàn)

發(fā)布時間:2022-01-15 10:47:30 來源:億速云 閱讀:124 作者:iii 欄目:互聯(lián)網(wǎng)科技

這篇文章主要講解了“單向散列函數(shù)怎么實現(xiàn)”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“單向散列函數(shù)怎么實現(xiàn)”吧!

單向散列函數(shù)

在介紹單向散列函數(shù)之前,我們先了解一下什么情況下需要使用到單向散列函數(shù)。

如果你需要從國外的網(wǎng)站上下載一個軟件,但是因為種種原因,國外的網(wǎng)絡(luò)太慢了,下載幾個G的數(shù)據(jù)幾乎是不可能的。剛好國內(nèi)有鏡像網(wǎng)站,可以從國內(nèi)下載數(shù)據(jù)。但是如何保證國內(nèi)的鏡像不是被篡改過后的呢?這個時候就需要單向散列函數(shù)了。一般來說網(wǎng)站會提供MD5或者SHA的值作為驗證值。

單向散列函數(shù)有一個輸入和輸出。輸入稱為消息,輸出稱為散列值。

散列值的長度跟消息的長度無關(guān),不論多少大小的長度的消息,都會計算出固定長度的散列值。

單向散列函數(shù)的性質(zhì)

單向散列函數(shù)具有下面幾個特性:

  1. 能夠根據(jù)任意長度的消息計算出固定長度的散列值。

  2. 計算速度要快。

  3. 消息不同,散列值也不同。

    這就意味著,如果僅僅是一點點的變動都會引起整個散列值的巨大變化。

    因為散列值的大小是固定的,所以有可能會出現(xiàn)不同的消息產(chǎn)生相同散列值的情況。這種情況叫做碰撞。

    難以發(fā)現(xiàn)碰撞的性質(zhì)被稱為抗碰撞性。當(dāng)給定某條消息的散列值時,必須保證很難找到和該消息具有相同散列值的另一條消息。

  4. 單向散列函數(shù)必須具有單向性。所謂單向性是指無法通過散列值來反推出消息的性質(zhì)。

單向散列函數(shù)的實現(xiàn)

單向散列函數(shù)有很多實現(xiàn)方式,你甚至可以自己寫一個。常見的如MD4,MD5, MD(Message Digest)是消息摘要的縮寫。

MD4和MD5是由Rivest在1990年設(shè)計的,現(xiàn)在已經(jīng)不再安全了。

SHA-1 是由NIST設(shè)計的一種能夠產(chǎn)生160比特散列值的單向散列函數(shù)。現(xiàn)在已經(jīng)不推薦使用。

SHA-256, SHA-384, SHA-512同樣是由NIST設(shè)計的單向散列函數(shù),他們的散列長度分別是256,384,512比特。這幾種單向散列函數(shù)統(tǒng)稱為SHA-2。

SHA-1已經(jīng)在2005年被攻破了。

SHA-3是在2005年SHA-1被攻破的背景下開始制定的,SHA-3是通過公開競爭的方法選拔出來的,最終被選中的算法叫做Keccak算法。

對單向散列算法的攻擊

單向散列算法最后的hash值是有固定長度的,所以只要我們愿意,總是可以不斷的重試,從而找到兩個相同的hash值。

感謝各位的閱讀,以上就是“單向散列函數(shù)怎么實現(xiàn)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對單向散列函數(shù)怎么實現(xiàn)這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI