2010-11-12 71 views
2

我知道哈希函數進行計算,最終結果是固定長度的字符串。例如,它們用於驗證文件是否相同 - 下載的文件。文件的所有者提供了散列,因此在這種情況下的完整性檢查是對兩個散列進行比較。MD5文件完整性檢查

那麼這是唯一的文件完整性檢查還是有另一件事?

回答

2

缺少逐字節比較的任何完整性檢查都是不可避免的散列。也就是說,在像MD5這樣的密碼哈希變得普遍使用之前,通常使用一般稱爲「校驗和」的簡單算法。有些是標準化的(嘗試查找,例如CRC32)在某種程度上。

這些方法的質量差別很大。例如,一個常見的加密函數(例如MD5或SHA *)是非常好的完整性指示符,CRC32校驗和可以容易地忽略任何實際大小的文件中的損壞或修改。

請注意您使用的內容和目的 - 儘管MD5和SHA-1不再被認爲可以抵禦惡意攻擊(如果您只是將它們用作「更好的校驗和」 ,但)。

0

通常就是這樣。但是,這並不檢查文件來自誰。後者是通過更復雜的數字簽名來實現的。

另外MD5(as well as SHA-1)已被broken等,不應該用於可能發生故意文件修改的情況。應該使用更強大的哈希函數。

+1

建議什麼人會有幫助。 – Kickaha 2012-09-12 20:56:29

0

散列函數在許多領域(如網絡)中用於完整性原因。另一方面有一個弱的正直觀,所以大部分時間都是可以避免的。他們採取任意長度的輸入,併產生(通常壓縮數據)到固定長度。如何檢查散列函數?就像你說的那樣,接收器產生消息的散列函數,然後檢查這兩個值。 此外,此功能不驗證爲什麼「數字簽名」存在的消息的發件人。當有人簽名的消息不能否認他執行了特定的動作,所以簽名也提供了「不可否認」 您必須小心,因此您要使用哪個函數。與SHA-1,SHA- 2.你也可以嘗試mcrypt和scrypt哪個最強。