1.哈希算法有哪些?
常見的哈希算法有MD5和SHA系列。目前,MD5和SHA1已經被破解。一般建議至少使用SHA2-256算法。
我們來看看寫哈希函數需要注意什么。首先我們要明白,Hash函數將大范圍映射到小范圍,目的往往是為了節省空間,讓數據易于保存。此外,哈希函數也將應用于搜索。
2.哈希算法沖突
稍微思考一下就可以發現,既然輸入數據不是定長的,但是輸出哈希值是定長的,也就是說哈希值是有限集,而輸入數據可以是無限多的,那么建立一一對應的關系顯然是不現實的。所以“碰撞”是必然會發生的,所以一個成熟的哈希算法會有更好的防碰撞性。同時,在實現哈希表的結構時要考慮哈希碰撞的問題。
哈希算法有什么特點?
哈希值也稱為指紋或摘要,具有以下特征:
反轉難度:給定哈希值,很難在有限的時間內反轉明文。
沖突避免:很難找到兩個內容不同的明文,使它們的哈希值一致。
輸入敏感度:原始輸入信息的任何變化,新的哈希值都應該有很大的變化。
快速:給定明文和哈希算法,可以在有限的時間和有限的資源內計算出哈希值。
