前言
雜湊函數(hash function),有別的名字叫做加密雜湊函數、密碼散列函數或加密散列函數,是散列函數的一種類型。
它被視為一種單向函數,這意味著從散列函數的輸出結果推導出原始輸入資料極為困難。在這種函數中,輸入的資料通常稱為訊息(message),而輸出的結果則稱為訊息摘要(message digest)或簡稱摘要(digest)。
雜湊函數的需求
1.輸入任意值,輸出固定長度的Hash
2.輸入值對應一個象徵它的輸出值(兩者的Hash值不同,表示輸入的內容一定不同。)
3.應盡量確保a'不等於b'(兩者的Hash值相同,表示輸入的內容可能相同,但是無法保證100%一樣。)
碰撞
當a=b的時候稱為碰撞(Collision),且計算結果不可逆,理論上是極難產生碰撞。
之前發現有些雜湊演算法無法抵擋攻擊,以下例子:
在2004年已經被證實無法抵擋collision攻擊的,以現在的技術甚至用手機就可以產生碰撞。、
SHA-1是在近期被google發現第一個可以產生collision的值的值。當時他們將兩個pdf檔案拿去做SHA-1計算的時候,產生了一樣的HASH值,代表了這個計算方式不安全。
結論
現在的技術日新月異,無法保證任何的雜湊計算方式都是100%安全的,但是在未來科技跟演算方式的進步之下可以不斷的更新以及找到更加安全的更加安全的hash function 讓大家可以免於受到攻擊的威脅。
參考資料