2014-01-30 21 views
0

我有一些我一直在研究,我找不到答案或者只是瞭解。在不改變內容的情況下加密文件時,是否會改變文件的MD5和/散列?就像一個Word文件一樣,加密後的字符串不變,加密後的文件是否與加密的Word文件保持相同的MD5和?MD5是否改變了加密?

+1

嗯,如何在保留原始內容的同時加密文件? – Leeor

+1

這個問題似乎與題外話,因爲它不是關於編程。 –

+1

@owlstead我認爲這是與編程相關的,因爲它與散列文件時發生的情況有關。我懷疑OP是想弄清楚加密和散列之間的相互作用,並想知道他們是否可以在不改變散列的情況下安全地加密文件。 – templatetypedef

回答

3

是的,加密文件應該實質上改變文件的任何散列。

加密哈希碼的構造方式使得散列任何兩個不同的字符串應該會產生非常不同的結果,即使原始字符串之間存在緊密連接。例如, 「你好」 的MD5哈希是

5d41402abc4b2a76b9719d911017c592

而MD5散列 「你好?」是

3809718a10a0f59bcf6d4939c10fd28d

加密文件應具有良好的加密,使生成的文件看起來統計學隨機的。因此,如果你想散列一個加密文件,它應該給出一個散列,這個散列在統計上與隨機字符串的散列無法區分。這意味着您應該獲得相同散列輸出的概率大致上是大約1/N,其中N是可能的散列輸出的數量。即使是一個不錯的散列函數,這應該是天文數字小。

+0

值得指出的是,兩個哈希都以5開頭,並且有一個數字上接近的第二個十六進制數字,這只是一個巧合。散列'你好?'是'3809718a10a0f59bcf6d4939c10fd28d'。 –

+0

@NickJohnson編輯這樣的評論沒有任何問題,因爲它不會顯着改變答案,並且可以消除一些誤解。這是爲你做的。 –

+0

@owlstead好點,謝謝。 –

0

加密文件會更改存儲在磁盤上的內容。文件內容的MD5散列不知道(或關心)它是否被加密,它只是從磁盤讀取字節。由於明文和加密之間的字節不同,MD5哈希將會不同。

1

這取決於;如果你從密文(這是加密明文的名字)創建完全相同的明文,並且散列那麼MD5總和將是相同的。如果你只是散列密文,那麼散列會有所不同。

即使只有一位輸入發生變化,加密安全散列應該始終彼此不同。即使有無限的消息散列到相同的值,應該不可能找到另一個計算爲相同散列的消息(這稱爲衝突)。

請注意,MD5哈希函數已損壞。如果攻擊者可以生成要散列的文件,則可以使用相同的散列生成兩個不同的文件。因此,創建兩個執行不同操作的程序非常簡單,但是可以散列到相同的MD5哈希。所以使用一個沒有被破壞的散列函數,例如SHA-256或SHA-512將被認爲是一個不錯的選擇。