哈希算法的原理和用途詳解


什么是哈希算法?哈希是一種加密算法,也稱為散列函數或雜湊函數。哈希函數是一個公開函數,可以將任意長度的消息M映射成為一個長度較短且長度固定的值H(M),稱H(M)為哈希值、散列值(Hash Value)、雜湊值或者消息摘要。它是一種單向密碼體制,即一個從明文到密文的不可逆映射,只有加密過程,沒有解密過程。

Hash的特點

易壓縮:對於任意大小的輸入x,Hash值的長度很小,在實際應用中,函數H產生的Hash值其長度是固定的。

易計算:對於任意給定的消息,計算其Hash值比較容易。

單向性:對於給定的Hash值,要找到使得在計算上是不可行的,即求Hash的逆很困難。在給定某個哈希函數H和哈希值H(M)的情況下,得出M在計算上是不可行的。即從哈希輸出無法倒推輸入的原始數值。這是哈希函數安全性的基礎。

抗碰撞性:理想的Hash函數是無碰撞的,但在實際算法的設計中很難做到這一點。

有兩種抗碰撞性:一種是弱抗碰撞性,即對於給定的消息,要發現另一個消息,滿足在計算上是不可行的;另一種是強抗碰撞性,即對於任意一對不同的消息,使得在計算上也是不可行的。

高靈敏性:這是從比特位角度出發的,指的是1比特位的輸入變化會造成1/2的比特位發生變化。消息M的任何改變都會導致哈希值H(M)發生改變。即如果輸入有微小不同,哈希運算后的輸出一定不同。

哈希算法有什么用途?

哈希算法可以檢驗信息是否是相同的,這樣的優勢可以節省重復文件傳送的時間。

舉一個生活中很平常的例子,我們在生活工作中會使用一些軟件給別人傳送文件數據,如果有人傳送了一份文件給一個人,然后又有一個人傳送了相同的文件給了另外一個人,那么這個社交軟件在第二次傳送文件的時候會對比兩次傳送的哈希值,發現是相同的,該軟件就不會再次上傳文件給服務器了。

除此之外,哈希算法還可以檢驗信息的擁有者是否真實。

比如,我們在一個網站注冊一個賬號,如果網站把密碼保存起來,那這個網站不論有多安全,也會有被盜取的風險。但是如果用保存密碼的哈希值代替保存密碼,就沒有這個風險了,因為哈希值加密過程是不不可逆的。

哈希算法會不會被破解?

從理論上說,哈希值是可以被獲得的,但是對應的用戶密碼很難獲得。

假設一個網站被攻破,黑客獲得了哈希值,但僅僅只有哈希值還不能登錄網站,他還必須算出相應的賬號密碼。

計算密碼的工作量是非常龐大且繁瑣的,嚴格來講,密碼是有可能被破譯的,但破譯成本太大,被成功破譯的幾率很小,所以基本是不用擔心密碼泄露的。

當然,黑客們還可以采用一種物理方法,那就是猜密碼。他可以隨機一個一個的試密碼,如果猜的密碼算出的哈希值正好與真正的密碼哈希值相同,那么就說明這個密碼猜對了。

密碼的長度越長,密碼越復雜,就越難以猜正確。如果有一種方法能夠提高猜中密碼的可能,那么可以算是哈希算法被破解了。

比如說,例如原本猜中的概率是1/10000000000000,現在增加到了1/1000。如果每猜一個密碼需要1秒,按照之前的概率猜,直到地球毀滅都可能沒猜中,但后者只需要1小時就足夠了。在這樣的情況下,哈希算法就算是被破解啦。

以上,是為大家分享"哈希算法的原理和用途詳解”的全部內容,如果用戶遇到的問題不能解決,可通過wosign官網客服尋求幫助,凡是選擇wosign ssl證書的網站用戶,wosign可提供免費一對一的ssl證書技術部署支持,免除后顧之憂.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM