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