哈希是一種數學公式,它采用可變長度的數據串,通常以文本的形式,并將其轉換為較短的字符串,固定長度的數值。哈希在計算機數據庫中經常使用,以使搜索更快、更有效。哈希還用于加密,以確保密碼不被泄露,以及對數字簽名進行身份...
哈希是一種數學公式,它采用可變長度的數據串,通常以文本的形式,并將其轉換為較短的字符串,固定長度的數值。哈希在計算機數據庫中經常使用,以使搜索更快、更有效。哈希還用于加密,以確保密碼不被泄露,以及對數字簽名進行身份驗證等用途。散列也使用哈希函數的名稱,也可以被認為是算法。

哈希在促進數據庫搜索中起著重要作用。
例如,由名字組成,如果用戶搜索"John Doe",計算機就必須將搜索中的所有字符與每個數據庫條目的字符進行匹配,名稱中的每個字符都有26種不同的可能,即英文字母表中的字母,而條目的可變長度也會減慢速度搜索。
相比之下,應用散列函數將使計算機的工作更輕松。將每個文本字符串轉換為一系列數字將簡化搜索,因為計算機對每個字符只有10種檢查方法:數字"0"到"9"。固定長度的數字序列還有助于計算機更有效地完成工作。
在應用了哈希函數的數據庫中,所有條目都有一個對應的、唯一的數字。這稱為哈希鍵。在這種情況下,當您進行搜索時,計算機首先將哈希函數應用于您編寫的輸入,例如"John Doe"。這將產生一個數值,例如"456789"。然后計算機可以快速將此結果與正確條目對應的哈希鍵匹配。
哈希也可以用作數字簽名例如,發送者Robert想將文檔發送給某人,而接收者Mary則希望確保文檔在傳輸過程中沒有被篡改,發送者Robert只需通過哈希函數來運行文檔,這將產生一個數值。然后,羅伯特加密哈希密鑰,并將文檔與加密密鑰一起發送。
Mary接收這兩個項目并解密哈希密鑰。現在,她可以看到文檔在發送之前產生的數值。要驗證她手中的文檔是否完全相同,她通過計算機上的哈希函數運行文檔。最后,她比較兩個鍵。如果兩個鍵相同,則文檔在發送給收件人的過程中不會被更改。
存在許多不同的哈希函數,每個函數都有各自的數學公式。要使哈希函數工作,必須將任何沖突最小化,當兩個數據庫項具有相同的哈希鍵時會發生這種情況。哈希函數也必須是單向的。這意味著您可以從數據庫項或文檔生成鍵,但不能反過來。換句話說,您不能從原始文檔的哈希鍵對其進行"反向工程"。