2011-07-16 73 views
1

我正在編寫一個Web應用程序,它將文件存儲在Amazon S3雲上。應用程序需要能夠顯示上傳到其中的文件在任何時候都未被更改。文件將被上傳到將被緩存的Web應用程序服務器,然後上傳到Amazon S3 Cloud。在客戶端上傳MD5校驗和文件

在進程中的每個點(選擇用於在客戶端上載的文件,存儲在高速緩存服務器上的文件,存儲在雲中的文件)中,我想獲取並比較md5校驗和以顯示文件未被更改任何方式。該應用程序是法律部門較大型項目的一部分,因此需要進行文件可靠性和驗證。

比較高速緩存服務器上存儲的文件和存儲在Amazon S3中的文件的校驗和很容易,但是我正在尋找一個文件上傳器,它將計算客戶端的校驗和,並用文件上傳。文件大小可能不會超過20MB,因此校驗和在客戶機上不會太難。

任何想法的人?爲了兼容性的目的,我更喜歡flash或java實現,雖然我明白html5將允許客戶端文件訪問,並且這已經在最新的firefox中被採用。

任何想法非常感謝!

感謝

羅斯

+0

而且,考慮到所有事情都是通過https發生的,你認爲甚至有必要檢查客戶端的MD5哈希值嗎? –

回答

0

MD5文件哈希僅用於確定無意的文件變更非常有用。也就是說,如果您擔心有人可能故意更改文件,MD5哈希不能保證算法已被破解。您應該考慮使用SHA散列功能之一。

此外,我不能確定您是否要求可以上傳到您的服務器的應用程序或將上傳到亞馬遜的應用程序。很明顯,這些客戶端會有很大的不同,因爲S3系統已經有了一個用於上傳文件的API,而你的服務器卻沒有。

+0

算法沒有被破解。它剛剛被證明有可能發生碰撞。這並不意味着很容易產生碰撞。 - 但我仍然同意SHA或更好的PGP更適合法律部門的任何事情。 – halfdan

+0

嗨,夥計們 - 感謝您的信息。我也看到有可能製作具有相同md5散列的文檔。我使用它的唯一原因僅僅是因爲這是Amazon S3在文件上報告的內容。 我們的緩存服務器將位於客戶端和S3之間。客戶端將文件上傳到緩存服務器,隨後,緩存服務器將文件上傳到S3。 –

+0

@Halfdan - 你的回答讓我覺得你不太明白哈希算法是如何工作的。鴿子洞原則規定所有哈希算法都會發生碰撞。一旦存在能夠預測哈希算法中的碰撞的算法,就認爲它已經損壞。自從證明MD5 SSL證書可能被僞造以來,MD5被認爲已經破壞了大約3年。請參閱:http://en.wikipedia.org/wiki/MD5#Collision_vulnerabilities –