哈希函數:將哈希表中元素的關鍵鍵值映射為元素存儲位置的函數。哈希函數是哈希表中重要的部分。一般來說,哈希函數會滿足以下幾個條件:系統開發 (雯雯:153薇233O電443O)
哈希函數應該易于計算,并且盡量使計算出來的索引值均勻分布,這能減少哈希沖突
哈希函數計算得到的哈希值是一個固定長度的輸出值
如果Hash(key1)不等于Hash(key2),那么key1、key2一定不相等
如果Hash(key1)等于Hash(key2),那么key1、key2可能相等,也可能不相等(會發生哈希碰撞)
在哈希表的實際應用中,關鍵字的類型除了數字類型,還有可能是字符串類型、浮點數類型、大整數類型,甚至還有可能是幾種類型的組合。一般會將各種類型的關鍵字先轉換為整數類型,再通過哈希函數,將其映射到哈希表中。而關于整數類型的關鍵字,通常用到的哈希函數方法有:直接定址法、除留余數法、平方取中法、基數轉換法、數字分析法、折疊法、隨機數法、乘積法、點積法等。
各種哈希算法
使用單向Hash函數的目的是提供消息指紋,如果不同的消息可以生成相同的哈希值(稱為發生了碰撞),那么攻擊者就能根據揭示出來的規律攻破這個機制。
高強度的哈希函數應當為兩條或多條不同的消息生成不同的哈希值。
如果一個哈希算法采取了措施確保兩條或多條不同的消息不會生成相同的哈希值,就稱其為免碰撞(針對哈希算法的攻擊基本上是試圖找出碰撞)。
高強度的哈希函數應當有以下特征:
應當對整條消息計算哈希值;
哈希函數應當是單向函數,避免哈希值泄露消息;
給定一條消息及其哈希值,要找出另一條具有相同哈希值的消息應該是不可能的;
哈希函數應當能夠抵御生日攻擊(碰撞攻擊)。
MAC就是消息驗證碼(Message Authentication Code)。是一種通過將密鑰應用到消息上確保消息內容真實性的身份驗證方案。
使用哈希算法是有很多優點的,就比如可以提高數據的查詢效率,可以提高儲存空間的利用率,哈希算法很難找到逆向規律,也可以做數字前門來保障數據傳遞的性。現在區塊鏈技術已經逐漸成熟,運用到哈希競猜這款游戲中后,捍衛我們每個人應享有的公平以及公正的權利,哈希游戲中的哈希值依托著去中心化的區塊鏈網絡隨機生成,任何人不可逆,不可篡改,隨時隨地可以在區塊鏈上去查詢,才真正做到了平臺該有的樣子。