2013-10-27 29 views
0

標題說明了一切。根據我的理解,每個文件都有唯一的MD5校驗和。是否可以從其總和中反向設計文件?如何從其MD5總和生成文件

例如,讓我們只是說視頻的總和是5.我知道,但它只是一個例子。你能寫一個你輸入5的程序,它會生成一個視頻嗎?

換句話說,不是從一個文件中生成一個和,而是從一個和中獲得一個文件。

+0

請參閱[Pigeonhole Principle](http://en.wikipedia.org/wiki/Pigeonhole_principle)爲什麼這是不可能的。現在,使用相同散列生成*一些*特定數據是不同的情況,並且是各種[碰撞攻擊](http://en.wikipedia.org/wiki/Collision_attack)的基礎。 – user2864740

回答

0

爲了擴大Jim W所說的任何散列函數是單向的,這意味着它們是不需要容易可逆的函數 - 而有些函數可能有逆函數,但大多數函數是不可逆的。

MD5是一個加密散列函數,這意味着它的有意設計是非常難以逆轉。特別是MD5相對較弱,存在易於發現衝突的漏洞 - - 兩個具有相同MD5散列的文件。

由於MD5散列只有128位,因此有2^128個不同的可能的MD5散列,雖然這是一個非常大的數字,但仍然有許多甚至更多的文件(可能是無限數量,事實上),所以一些文件將不可避免地散列到相同的值。正如user2864740在評論中指出的那樣,這被稱爲pigeonhole principle

A 密碼散列函數 - 就像SHA-256一樣,它被認爲在計算上不可靠,以便可靠地找到這樣的衝突。

+0

我不知道。我認爲這主要是用於錯誤檢查,就像文件傳輸一樣。 – AnOptionalName

+0

@AnOptionalName錯誤檢查實際上是MD5的一個很好的用法,因爲它不依賴於它的加密強度。 *真實性*檢查,另一方面 - 您嘗試驗證您下載的文件來自您認爲來自的人 - 是否*對MD5非常有用,因爲創建具有相同散列的不同文件。 –

1

不,這是一種方式 - 否則就是很好的壓縮方法!

+0

那實際上是我的計劃。哈哈,回去做畫板。如果有些人知道我們有很多錢可以賺錢,對吧? – AnOptionalName