What is Hash?(什麼是哈希)
Hash, 是“散列”的意思,就是把任意長度的輸入(預映射, pre-image),通過雜湊演算法,變換成固定長度的輸出,那麼輸出的就是散列值。簡單來說,Hash就是一種将任意長度的消息壓縮到某一固定長度的消息摘要的函數。
Hash Algorithm(雜湊演算法)
舉個簡單的例子,比如家裡來了一摞書,沒有按照順序就放在了書架上,看似很整齊,但是當你去查找哪一本書的時候,你可能就會頭大了。因為這麼多書,沒有一定規則存放,要找具體哪一本書非常地費時,有時候還未必能找到。就在你一籌莫展的時候,你母親進來了,幫你把所有的書,全部拿出來,先按書的類别進行分類,有曆史、人文、科普、計算機專業、土木工程專業、攝影等類别,放在不同的分區。雖然分類的過程花費的時間比随意亂放要長很多,但是你按一定規則擺放書籍之後,以後能更快地的找到你想要的具體拿一本書,因而提高了查找效率。
以上的例子是雜湊演算法應用于生活的一個十分常見的例子。也就是說,通過雜湊演算法,我們能按一定的規範存儲資料,目的就是給資料定位,以便于之後查找。這是雜湊演算法的核心價值所在。不過,沒有一樣東西是完美的,算法也不例外。就像擺放書籍這個例子一樣,雖然按照了一定規則去擺放書籍,友善查找,但是按某種規則去防止書籍的過程缺花費了不少的時間。那也就是說,雜湊演算法,
優點:查找資料快;
缺點:插入資料慢。