您好,登錄后才能下訂單哦!
這篇文章主要講解了“單向散列函數怎么實現”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“單向散列函數怎么實現”吧!
在介紹單向散列函數之前,我們先了解一下什么情況下需要使用到單向散列函數。
如果你需要從國外的網站上下載一個軟件,但是因為種種原因,國外的網絡太慢了,下載幾個G的數據幾乎是不可能的。剛好國內有鏡像網站,可以從國內下載數據。但是如何保證國內的鏡像不是被篡改過后的呢?這個時候就需要單向散列函數了。一般來說網站會提供MD5或者SHA的值作為驗證值。
單向散列函數有一個輸入和輸出。輸入稱為消息,輸出稱為散列值。
散列值的長度跟消息的長度無關,不論多少大小的長度的消息,都會計算出固定長度的散列值。
單向散列函數具有下面幾個特性:
能夠根據任意長度的消息計算出固定長度的散列值。
計算速度要快。
消息不同,散列值也不同。
這就意味著,如果僅僅是一點點的變動都會引起整個散列值的巨大變化。
因為散列值的大小是固定的,所以有可能會出現不同的消息產生相同散列值的情況。這種情況叫做碰撞。
難以發現碰撞的性質被稱為抗碰撞性。當給定某條消息的散列值時,必須保證很難找到和該消息具有相同散列值的另一條消息。
單向散列函數必須具有單向性。所謂單向性是指無法通過散列值來反推出消息的性質。
單向散列函數有很多實現方式,你甚至可以自己寫一個。常見的如MD4,MD5, MD(Message Digest)是消息摘要的縮寫。
MD4和MD5是由Rivest在1990年設計的,現在已經不再安全了。
SHA-1 是由NIST設計的一種能夠產生160比特散列值的單向散列函數。現在已經不推薦使用。
SHA-256, SHA-384, SHA-512同樣是由NIST設計的單向散列函數,他們的散列長度分別是256,384,512比特。這幾種單向散列函數統稱為SHA-2。
SHA-1已經在2005年被攻破了。
SHA-3是在2005年SHA-1被攻破的背景下開始制定的,SHA-3是通過公開競爭的方法選拔出來的,最終被選中的算法叫做Keccak算法。
單向散列算法最后的hash值是有固定長度的,所以只要我們愿意,總是可以不斷的重試,從而找到兩個相同的hash值。
感謝各位的閱讀,以上就是“單向散列函數怎么實現”的內容了,經過本文的學習后,相信大家對單向散列函數怎么實現這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。