我將跟蹤潛在的數百萬個不同文件的不同版本,我的意圖是對它們進行散列以確定我已經看到了該文件的特定版本。目前,我只使用MD5(該產品仍處於開發階段,因此它從未處理過數百萬個文件),顯然這不足以避免衝突。使用散列跟蹤文件的唯一版本
但是,這裏是我的問題 - 如果我使用兩種不同的方法散列文件並存儲散列(比如SHA1和MD5),或者如果我選擇單個較長的散列(比如SHA256)並依靠這一點?我知道選項1有288個散列位,而選項2只有256個,但假設我的兩個選擇是相同的總散列長度。
因爲我正在處理潛在的數百萬個文件(以及這些文件的多個版本),所以我想盡我所能避免衝突。但是,CPU時間不是(完全)免費的,所以我對社區感覺如何權衡感興趣 - 將更多的位添加到我的哈希計算比較昂貴的計算中,並且對於多個不同的哈希值是否有優勢到一個單一的,更長的散列,在兩個解決方案中給定相同數量的位?
如果兩個文件具有相同的哈希但不同,文件跟蹤器將不知道它們是不同的,並可能最終刪除其中一個文件,導致數據丟失(無論如何)。 – 2010-03-13 05:36:17
如果這是一個問題,那麼散列函數是不合適的。 – codenheim 2010-03-13 05:52:14
我很擔心不同文件之間的衝突 - 無論它是什麼名稱,我想確定一個文件是否已經被網絡上其他人備份。我想我的問題是減少碰撞風險的最佳方法。 – SqlRyan 2010-03-13 21:09:29