簡述哈希算法的含義與應(yīng)用

在之前的文章中,我們聊了SHA-1和SHA-2,以及MD5,它們都屬于安全散列算法,也就是我們經(jīng)常聽到的“哈希算法”,那什么叫做哈希算法呢?我們今天就來了解一下。

哈希算法

哈希算法并不是一種算法,也稱散列、雜湊算法,英文名為Hash,它的原理就是將任意長度的二進制值串映射為固定長度的二進制值串,這個映射的規(guī)則就是哈希算法,而通過原始數(shù)據(jù)映射之后得到的二進制值串就是Hash值(也叫哈希值、散列值)。

Hash

優(yōu)秀的哈希算法有什么要求?

  1. 從Hash值不能反向推導(dǎo)出原始數(shù)據(jù)(所以哈希算法也叫單向哈希算法);
  2. 對輸入數(shù)據(jù)非常敏感,哪怕原始數(shù)據(jù)只修改了一個數(shù)據(jù),最后得到的Hash值也大不相同;
  3. 散列沖突的概率要很小,對于不同的原始數(shù)據(jù),Hash值相同的概率非常??;
  4. 哈希算法的執(zhí)行效率要盡量高效,針對較長的文本,也能快速地計算出Hash值。

哈希算法的應(yīng)用

  • 安全加密

說到哈希算法的應(yīng)用,最先想到的應(yīng)該就是安全加密。最常用于加密的哈希算法是MD5和SHA。而對用于加密的哈希算法來說,保證“從Hash值不能反向推導(dǎo)出原始數(shù)據(jù)”和“散列沖突的概率要很小”是非常關(guān)鍵的。

哈希算法

  • 密碼儲存

密碼作為用戶的非常隱私的信息,最簡單的保護措施就是對密碼進行hash加密。在客戶端對用戶輸入的密碼進行hash運算,然后在服務(wù)端的數(shù)據(jù)庫中保存用戶密碼的hash值。也正因沒有明文儲存密碼,“找回原密碼”這個功能越來越少見。

  • 唯一標識

我們在校驗兩個文件是否一樣的時候,可以從大文件中按照特定的規(guī)則取一些二進制數(shù)據(jù),利用哈希算法得出哈希值作為該文件的唯一標志。如此,相同的文件必定具有相同的哈希值,也就是相同的唯一標志;不同的文件在很大概率上是具有不同的哈希值唯一標志的。

  • 數(shù)據(jù)校驗

相信每個人都使用過BT下載軟件吧,那么要判斷下載的文件是否完整,就需要用到哈希算法了,這里利用了哈希算法“對輸入數(shù)據(jù)非常敏感”的特點。當(dāng)文件塊下載完成之后,可以通過相同的哈希算法,對下載好的文件塊逐一求哈希值,然后跟種子文件中保存的哈希值比對。如果不同,就說明這個文件不完整或者被篡改了。

數(shù)據(jù)校驗

哈希算法在日常生活中應(yīng)用甚廣,遠遠不止上述這些,像數(shù)字簽名、數(shù)字證書、分布式存儲、數(shù)據(jù)分片、負載均衡等都有哈希算法的影子。

免責(zé)聲明:素材源于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系刪稿。