為什麼說 MD5 是不可逆的?

時間 2021-05-11 20:10:35

1樓:墜入銀河

舉個栗子,我在手中紙條上寫了幾個數字,然後我告訴你,我手中紙條上寫的所有數字相加結果等於666,你猜我寫的是什麼?

md5是一種約定好的演算法,兼顧了各個方面,比栗子中的所有數相加要複雜的多,但過程是差不多的,你不能用結果來推算原文,只能靠猜的。

2樓:牛排君

演算法原理我解釋不來,最主要的是md5中包含的資訊(和原資料比)太少了。

乙個簡單的例子,我們可以對乙個整數取除100的餘數,得到乙個「MD5」,比如67的md5是67,247的md5是47,7635的md5是35,那麼如何根據這個md5(餘數)得到原來的數呢?

3樓:薛丁格的佛系

如果md5可逆,豈不是世界上最偉大的壓縮技術?

任意大小檔案都可以壓縮到32位16進製制數?

也就是可以將幾個G位元組的檔案壓縮到16位元組。。。

4樓:颯and颯比里體

這不廢話,位元串有多少種組合,md5串又有多少種組合,這倆都不是乙個數量級的,肯定會出現乙個md5值對應無數個位元串的情況,怎麼可能可逆呢?

5樓:

假設:1,是MD5的結果。

MD5的演算法是對原數除以10取餘(假設)。

那麼,你知道原數是1,還是11,還是1697649753165991?

6樓:kuzhushu

f(x)=1/x,給定1個x可以得到相應的f(x);

其實你也可以給定1個f(x)的值計算出x來...

f(x)=sin(x),給定1個x可以計算出相應的f(x);這時你給出f(x)=0.8,你還能計算出x來嗎?!

7樓:6IE閆輝

首先解釋一下不可逆是什麼意思,不可逆就是事物變化狀態不可逆轉,也就是A能變到B,但是B不能變回A。那麼MD5不可逆是怎麼回事呢,因為MD5加密演算法是使用HASH演算法,不可逆的,比如有1234567890qwe。。。1024個位元組,通過hash演算法生成的MD5值只有16位元組,是不可能從16位元組還原成節的。

所以說MD5演算法是不可逆的。

8樓:呀哈哈

md5是屬於單向雜湊函式,最終會把不同的訊息對映成固定長度的雜湊。這意味著,對於大體積的訊息,需要丟失部分資訊。這和壓縮不同,壓縮需要保留一定規律。而雜湊無法推導出原文的內容

9樓:xchg

新增:其實應該說是不可逆的,但是有辦法破解。

可逆的,md5的本質是資料摘要,我們可以使用計算機,列舉出所有資料,然後對其求md5。假設計算機效能足夠,會得到無窮無盡的結果。因為在不確定長度的情況下,資料樣本是無限的。

而如果我們知道原資料長度,並且資料長度比較小,一般是可以使用當今的計算機計算求出有限的結果,而原值是結果中的哪乙個?只能去猜了。

10樓:kafka1908

對於函式y=md5(x),x的取值範圍為無限(任意長度,任意取值),y的取值範圍是有限(長度32位),以無限對有限,可知,給定乙個y值,x有0,1,甚至無限多個解。那麼給你乙個y,在這可能無限多個解中,你能知道那個是對的麼?

11樓:

知道人臉識別吧,就是不同的人,臉型長相大概率是不同的,因此只通過臉就能有效區分不同的人

md5也是類似,一段資料的md5可以理解成這段資料的「臉」

只通過「臉」當然無法還原出一整個人了

12樓:「已登出」

會有很多檔案有共同的md5,但是由於有序化的檔案(我們可利用的),在這些檔案中會比例非常少,而且有場景限制(比如你只會在某個環境下去找拿到這個對比檔案)。所以,md5的參考準確率會高到正常是不會碰到共用同乙個md5的檔案。

13樓:漁父

跟本原因是 MD5 的過程中有資訊損失了,所以多個原資訊有相同的 MD5 序列,所以即使對信源的全部可能性瞭如指掌,又有無窮大的 MD5 計算能力,最終也無法判斷這些對映到相同序列的原資訊哪個是真的。

但是採取壓縮感知或者類似技巧,從歷史資訊等渠道推測出信源分布的話是有可能將選對的概率提高,甚至提高到接近準確的水平的。

也就是說 MD5 在原理上嚴格地不可逆,但在實現上不一定能達到理論的水平。這就是算力極大豐富的時代的詭譎之處。

14樓:

外賣小哥給你送外賣,要和你確認手機號碼,但出於隱私你們雙方又不能直接把手機號說出來,怎麼辦?

「你手機尾號(四位數)是多少?」

這就是乙個簡單的數字簽名過程,在這個過程中用到的方法的是「取模10000」,目的是為了提取原本資料的一些資訊作為簽名,完整的手機號碼並不會因為尾號而洩露出去,但你能夠藉此驗證對方提供號碼的真偽。

有人覺得提取尾號並不「安全」,因為它仍然明碼暴露了一些個人資訊,那我們可以再稍微改進一下簽名提取的過程,比如對手機號碼「取模10001」,這樣乙個手機號碼***生成的簽名就是「9880」,是不是覺得安全多了?

但這樣是理論上絕對安全的嗎?並不是,萬一有個人天賦異稟的少年憑空矇對你的手機尾號呢?或者矇對你取模的數字是多少,最終取走你的外賣呢?

也不是沒可能。但是我們相信,從實際出發,這樣的風險是很小的,甚至是可以忽略的。

MD5也是數字簽名的一種,基本的思想是一樣的,也就是通過雜湊函式提取出部分資訊用於驗證資訊真偽,只不過雜湊的過程遠遠不只是提取個尾數那麼簡單,安全性也遠遠在此之上,而且雜湊函式本身並非是雙射,所以逆向的可能性也是不存在的,不然MD5就投奔壓縮演算法了。但不要把它視為「絕對安全」,因為理論上存在破解的途徑和概率,只不過就現有的科技水平提供的算力,暴力破解的成功率和收益小到大部分情況下可以直接忽略罷了,正因為如此我們把它當作是安全有效的。

15樓:蝴蝶效應

給你舉個例子吧!

我們先把每個不同的檔案假設為乙個不同的數,然後將這個數字x2÷1x3÷2x4÷3……x10000÷9999,然後得出乙個數又讓他x1x2x3……x9999x10000得出了乙個數字。

我們只取他前二十位的一串數字

然後每次你給我發檔案的同時還給我發這串數字,然後我自己通過這個檔案再用上面的演算法驗算後得出的數字比對是否有差異來判斷檔案的準確性。

現在由我來問你,有沒有可能哪天人們的科技能夠到達通過這20位的數字能夠逆推出我原本的檔案的準確資訊?

16樓:咕咕咕

沒什麼花裡胡哨的.

就問你,無窮長度的資料都能壓縮到16位,或者32位,你告訴資料不丟失怎麼復原吧.

不能復原就肯定是資料丟失了,留下來的就只時資料的簽名而已.

細一點就是每次從原始資料中取一段固定長度的資料然後不停的疊加,直到遍歷完原始資料(不足的以預設值補齊).

二進位制本就0和1,疊加2次就大概率不能還原了.

17樓:於冬

資訊都丟失了,怎麼可逆啊…這東西其實根本不是加密,而是一種單向的計算,說白了計算結果本身沒有任何意義,只是明文不同會得到不同的計算結果,當然也可能相同…

18樓:吳翔

有點像加法,a + b = c,如果知道a和b,就能算出c,但是知道c並不能算出a和b,因為資訊有損失。MD5就和這類似。

19樓:老朱

你站在牆前面,一束光照向你,在牆上形成了乙個剪影。

不同人的剪影基本不同。

好了,現在給你乙個剪影,你給我把本人畫出來!!!

20樓:蹦蹦騎士

怎麼都是長篇大論的,想理解不是很簡單嘛,給你乙個數字100,然後我告訴你這是若干數相加的結果,演算法中只用到了加法,你給我還原一下我的原始資料。

21樓:被逼註冊

MD5摘要演算法,是將一串二進位制(甭管10個位元組還是100G位元組),摘要成128位大小固定的字串。摘要的目的是防止篡改或驗證一致性,比如驗證兩個10G檔案是否一樣,客戶端摘要一下MD5值傳給伺服器驗證,不需要傳10G檔案;再比如網路密碼,伺服器儲存的是密碼的MD5值(防止密碼洩露,有的還加干擾加密等防止彩虹表暴力破解),我們登入時輸的密碼摘要出MD5與伺服器比對證明是否正確。

其設計之初,就是摘要演算法,山東大學王小雲教授所做的研究,是從理論上尋找出MD5碰撞的反向推導,使得碰撞出MD5不再暴力嘗試了。

MD5是摘要演算法,不是加密演算法。

22樓:legen

MD5是摘要演算法

顧名思義,就用摘要來舉個簡單的例子

書的目錄就可以當作摘要,可以從正文生成目錄,但沒辦法只從目錄生成正文。

23樓:hzmagix

這個用基本邏輯都可以答覆。

所謂可逆是指輸入和輸出之間存在一一對應關係。

md5的長度是確定的,而輸入的長度是任意的,相當於無窮多個值對應固定的幾個值。邏輯上講必然會出現不同的輸入對應同樣的輸出的情況。

所以不可逆。

24樓:社群送溫暖

古有傳世畫作一副,將其均分作100份,每份取其最右下角的一塊,將這一百塊殘片用油墨潑之,且保證對於任意殘片油墨覆蓋率至少高達99%以上,現給你殘片16張,求原畫內容如何?

25樓:mcg

資料:我愛你

md5: 24劃

資料被篡改:我不愛你

md5驗證: 資料有28劃,與md5值不一致,資料被篡改過。

現在你問,我說乙個24劃別人能否逆向推測出「我愛你」三個字?

另外,md5本身也可能會被篡改,所以還要加數字證書+數字簽名等一系列體系。

26樓:Coldwings

是這樣的:各位想必學過高中數學,學過函式這一章,知道有個反函式的定義。那就好辦了:MD5可以看成乙個函式,但卻不是乙個單射函式,所以MD5沒有反函式,故不可逆。

MD5用作摘要或者簽名,都只能保證一點:MD5結果不同,則資料肯定不同;MD5相同的情況卻不能保證資料相同。所以說這玩意可以碰撞,不能復原。

如果MD5可逆,它將打破資訊理論的基礎,成為乙個無論多少資料都能用128bit表示的逆熵的壓縮演算法,而不是乙個資訊摘要。

27樓:

1.md5是摘要演算法。摘要演算法不是加密,本身就不可逆。

2.如果你見得多,可以發現兩個不同檔案一樣的md5值。雖然這是理論,我也沒見過/-/

28樓:餘騰靖

摘要和壓縮有點像,都是把長的變短的,但是壓縮本質上是可以還原資料的,例如一維陣列為1000 個 0,我們可以將 1000 個元素的陣列壓縮成 3 個元素,999,0, 1000。999 表示當前壓縮演算法是相同元素壓縮,0 表示相同的元素是 0,1000 表示相同的數量是 1000,這樣我們可以通過壓縮後的長度為 3 的陣列還原出長度位 1000 的陣列,這過程是使用了一些額外資料儲存原資料的資訊使的壓縮後的資料能夠還原。

但是摘要演算法壓根就不考慮還原,它的要求只是盡量不同的輸入資料能夠輸出不同的值,比如直接返回輸入資料的位元組數,但是這個演算法其實問題很大,一點都不實用,很容易重複。當然,重複是不可避免的,長度為 32 位的 hash 串,最對能表示 2 的 32 次方個不同的值,實際上的輸入資料是無窮個。

非大佬,一點淺薄的看法。

為什麼現在網上有很多軟體可以破解MD5,但MD5還是很流行?

徐雙雙 MD5是怎麼破解的呢?比如你12345,MD5值是827CCB0EEA8A706C4C34A16891F84E7B。然後現在就可以宣布我破解了密文827CCB0EEA8A706C4C34A16891F84E7B,他的原文是12345。只要我的表足夠大,就可以把常用的字串的MD5值全部算出來,...

為什麼說低生育率不可逆轉?

Caterina 我不認為低生育率就一定不可逆轉,但在現實條件下的確不可能逆轉。原因很簡單 生育成本過高。如果要逆轉的話,就要降低生育成本,那需要人類生活狀態的巨大變化才行。 Chang Ling 我就不認為生育率低不可逆轉。知乎不是提倡問 為什麼 之前應該先問 是不是 嗎?目前生育女性的成本大於不...

是否存在乙個字串,它的md5值是其自身?

Belleve MD5 是否有不動點尚無定論 週期軌的話 你從全 0 開始反覆 MD5 總能構造出乙個來,因為所有 128 位串數量是有限的 悽臨雨 按我的經驗,650tiboost顯示卡加速的多執行緒md5演算法,1億或10億條 s的水平!是不是嚇人?just try! fly andy 可以比較...