我正在設計一個LAMP堆棧頂部的存儲雲軟件。依靠散列進行文件識別有多安全?
文件可能具有內部ID,但將它們存儲在服務器文件系統中的文件名不是以遞增的id存儲,而是使用散列作爲文件名。
如果當前集中的數據庫應該分片或分散或者應該建立某種主 - 主高可用性環境,那麼在數據庫中作爲標識符的哈希也會具有很多優點。但我還不確定。
客戶端可以在任何字符串下存儲文件(通常是某種路徑和文件名)。
此字符串保證是唯一的,因爲第一級就像用戶在Amazon S3和Google存儲中註冊的「桶」。
我的計劃是將文件存儲爲客戶端定義路徑的散列。
這樣,存儲服務器可以直接爲文件提供服務,而無需數據庫詢問它是哪個ID,因爲它可以計算散列,從而可以即時計算文件名。
但是我怕碰撞。我目前正在考慮使用SHA1哈希。
我聽說GIT也使用哈希也修訂標識符。
我知道碰撞的可能性真的很低,但是可能的。
我只是不能判斷這一點。你會或不會依賴hash來達到這個目的?
我還可以對路徑編碼進行一些規範化處理。也許base64作爲文件名,但我真的不希望這樣,因爲它可能會變得混亂,路徑可能會變得太長,可能還有其他複雜性。
對我來說,這聽起來像FUD。 – 2015-04-21 21:45:29