當前位置:首頁 » 操作系統 » md5碰撞演算法

md5碰撞演算法

發布時間: 2022-08-09 07:12:19

Ⅰ 朋友老說哈希演算法,請問到底什麼是哈希演算法

首先,一般哈希演算法不是大學里數據結構課里那個HASH表的演算法。一般哈希演算法是密碼學的基礎,比較常用的有MD5和SHA,最重要的兩條性質,就是不可逆和無沖突。
所謂不可逆,就是當你知道x的HASH值,無法求出x;
所謂無沖突,就是當你知道x,無法求出一個y, 使x與y的HASH值相同。

這兩條性質在數學上都是不成立的。因為一個函數必然可逆,且由於HASH函數的值域有限,理論上會有無窮多個不同的原始值,它們的hash值都相同。MD5和SHA做到的,是求逆和求沖突在計算上不可能,也就是正向計算很容易,而反向計算即使窮盡人類所有的計算資源都做不到。

我覺得密碼學的幾個演算法(HASH、對稱加密、公私鑰)是計算機科學領域最偉大的發明之一,它授予了弱小的個人在強權面前信息的安全(而且是絕對的安全)。舉個例子,只要你一直使用https與國外站點通訊,並注意對方的公鑰沒有被篡改,G**W可以斷開你的連接,但它永遠不可能知道你們的傳輸內容是什麼。

順便說一下,王小雲教授曾經成功製造出MD5的碰撞,即md5(a) = md5(b)。這樣的碰撞只能隨機生成,並不能根據一個已知的a求出b(即並沒有破壞MD5的無沖突特性)。但這已經讓他聲名大噪了。

Ⅱ 山東大學的王小雲真的研究出了MD5的逆向演算法嗎

MD5是不可能逆向的。王教授的碰撞法是利用了MD5或者SHA1演算法的一個特性,根據MD5和SHA1等Hash演算法的特點,因為他們是任意長度的字元串變成固定長度的摘要信息。那麼這里就有可能發生一個問題,就是不同的字元串在理論上是有可能產生相同的摘要信息。王教授所謂的碰撞法,碰撞的就是不同的字元串所產生的摘要信息是一樣的那些字元串。因此得名碰撞法。 碰撞就是體現在這里。沒有什麼其它的傳神的東西了。根據SHA1和MD5等Hash演算法,在設計時候,設計這個演算法的人認為不同的字元串要產生相同結果的摘要信息的可能性幾乎為零。而王教授則證明了SHA1和MD5等Hash演算法產生的摘要信息規則是可以在比較短時間內被破解的。這樣一來,原始數據的 Integrity 就被打破了。 所謂的破解,也就是體現在這里。至於破解工具,下面的地址提供一些免費的破解服務,能破解一些簡單的密碼,其實都是採用字典或暴力破解。 www.cmd5.com www.xmd5.org我有時去破解一些常用的密碼,有一定的成功率

Ⅲ 如果把數字123用MD5加密,結果再加密,一直加密下去會怎麼樣拜託各位了 3Q

MD5是個散列演算法,一定會有沖突的,只不過這個演算法的實際上,讓製造沖突需要花費足夠的時間而已 這么看吧,MD5是一個將值域為無窮范圍映射到一個值域為0~~2^128的范圍,肯定會有沖突 補充: 「安全的雜湊函數在設計時必須滿足兩個要求:其一是尋找兩個輸入得到相同的輸出值在計算上是不可行的,這就是我們通常所說的抗碰撞的;其二是找一個輸入,能得到給定的輸出在計算上是不可行的,即不可從結果推導出它的初始狀態。現在使用的重要計算機安全協議,如SSL,PGP都用雜湊函數來進行簽名,一旦找到兩個文件可以產生相同的壓縮值,就可以偽造簽名,給網路安全領域帶來巨大隱患。 MD5就是這樣一個在國內外有著廣泛的應用的雜湊函數演算法,它曾一度被認為是非常安全的。然而,王小雲教授發現,可以很快的找到MD5的「碰撞」,就是兩個文件可以產生相同的「指紋」。這意味著,當你在網路上使用電子簽名簽署一份合同後,還可能找到另外一份具有相同簽名但內容迥異的合同,這樣兩份合同的真偽性便無從辨別。王小雲教授的研究成果證實了利用MD5演算法的碰撞可以嚴重威脅信息系統安全,這一發現使目前電子簽名的法律效力和技術體系受到挑戰。」 網上的一點資料,希望對你有幫助

Ⅳ 王曉雲破解MD5到什麼程度

「比如我一個定長的32個字元的字元串1(包括0~9,a~f共16個字母)形成的一個MD5的字元串2,能否通過這個字元串2准確的找到字元串1?」

這個不可能,MD5是消息摘要演算法,只是「摘要」而已,理論上是不可逆的。

「再比如一個定長的33個字元的字元串1形成MD5字元串2,能否通過字元串2找到所有形成MD5字元串2的33個字元的字元串1。」

這個應該可以,只是可能的值非常多,多到可以認為「不可逆」。

其實,王曉雲所謂的MD5破解並不是你說的那種由加密後的字元串可以反推回加密前的內容,而是「MD5碰撞」,就比如說字元串S1和S2不同但它們形成的MD5值卻相同,即發生了「碰撞」。王曉雲的研究成果是在知道S1的情況下,可以通過演算法在一定的時間內找到S2 使S1和S2的MD5相同,說白了就是找「碰撞」。

我這里有外國的研究人員根據她的研究成果特意構造的發生「MD5碰撞」兩個控制台程序,一個是不停地輸出 Goodbye World :-( 另一個是只輸出一個Hello World ;-)
但是這兩個程序的MD5卻一樣。
現在的研究成果還不能使任意兩個文件的MD5值一樣。但是既然可以人為地構造碰撞就說明MD5演算法已經不再適合做文件的數字簽名,驗證文件的完整性了。

所以,王曉雲對MD5演算法的破解是發現MD5可以發生「碰撞」並給出尋找這種碰撞的方法,但是MD5演算法本身依然是不可逆的,仍然可以用來加密。

////////////////////////////////////////////////////
補充:
「根據MD5值能找到和原字元S1相同MD5的S2,這個S2是隨機找到的?還是有什麼規律呢?如果我想找到一定條件的S2這可能嗎? 比如我就想找到某MD5的S2是一個開頭5個字元是A1234的字元串,這可能嗎?(當然是在短期內找到,而不是窮舉)。」
不是窮舉隨機找到的,而是用一套碰撞搜索演算法,利用這套演算法可以在一定時間內找到碰撞,但是搜素到的結果是不可預期的,也就是說在找到前很難預言S2會是什麼,更不要說滿足一定的條件了。

希望對您能有所幫助~~~

P.S.:還有,是buaa_dep6,不是bubba,呵呵^_^

Ⅳ MD5演算法被碰撞的概率有多大

惡意攻擊的話,很大。我記得前段時間,國外已經有程序可以實現文件的MD5值碰撞成功的,幾分鍾。

Ⅵ 關於MD5加密演算法密碼驗證問題

(恰恰我最近也在研究加密這塊,

我們公司項目的RSA ASE MD5 SHA-1加密方案都是我寫的。

直接拿我分享會上的稿子了)

先回答你的問題:

你的擔心是正確的,

MD5加密的結果值A,是可以由兩個不同的內容B和C得到的

即:期望的正確密碼 a a進行MD5加密的結果

某人輸入了錯誤的密碼x,

x進行特殊的演算法處理,是可以得到 這個MD5值的

————

但是你注意一點,錯誤的密碼數據,必須是通過復雜演算法得到,簡單點稱作「碰撞演算法」。碰撞演算法,其實可以看作是一種偽裝演算法,即,把錯誤的東西偽裝成某個正確東西的MD5值。

至於「碰撞演算法」的原理,可以從MD5加密的原理探知1、2,

MD5加密的過程有四步驟:

  1. 填充 2.初始化變數3. 處理分組數據 4.輸出結果

「碰撞演算法」原理就是在前三步進行「大數據量樣本的填充-試錯-填充試錯-直至得到期望的結果

破解過程中有三點是必須清晰的;

1.大量的正確密碼的樣本

2.採用碰撞演算法

3.事先預知的,破解者期望的正確的結果

三者缺一不可

MD5「碰撞演算法」的示例場景也是在 文件(比如數字簽名)摘要加密上,

即,像密碼學家演示的那樣:

通過演算法,可以得到相同MD5值的A和B (A和B只是代指),這種演算法2004年已經由中國的密碼學家王小雲實現。

但是回到題主擔心的,

非法分子,事先並不知道 張無忌的賬號——正確密碼對應的MD5值,

他只能用「碰撞演算法」去試,隨便編一個假的密碼,用「碰撞演算法」去進行偽裝填充-試錯

但是試的過程就是無數次跟貴公司後台校驗的過程,

在這個過程,貴公司後台應該做了用戶當日最大錯誤密碼次數處理。

所以理論上,不存在一個人,輸入了錯誤的密碼,登錄成功的情況。

假設這個人每天能試5次,使用「碰撞演算法」估計要算好幾輩子了。

——

但是強調一下「MD5碰撞演算法」的應用前提:

  1. 已知的明文以及明文對應的MD5值

  2. 根據1的條件,演算法可以偽裝出 另一個明文以及相同的MD5值

所以,不存在偶爾輸錯了一個密碼,使用MD5加密,湊巧得到了正確密碼的MD5值,這種情況不滿足「碰撞演算法」的條件和前提。

根本不可能。

安全性總結:

對於文件來說碰撞可能容易,但是對於限定長度的密碼或者密文來說,MD5作為一種高性能高安全的數字簽名演算法來說,還是非常實用的

——

綜上 MD5碰撞幾個關注點

  1. 多數情況下,會產生不可視字元,而密碼不可能存在不可視字元的.

  2. 生成"碰撞"的字元,能和你密碼本身長度相等的.基本不可能.


基於上面兩點.只要稍作點文章.就可以防止MD5碰撞了.

1.密碼進行多次MD5加密
2.密碼過濾不過視字元.
3.密碼是定長的.例如:32個字元.用戶不夠的字元,用一固定字元如:空格補充.超長的.一律非法.

————

參考文章

【1】中國密碼學家王小雲2004年提交的破解MD5的演算法

【2】碰撞演算法原理分析

【3】產生MD5碰撞的新的充分條件集

【4】MD5碰撞

Ⅶ 什麼是MD5

MD5是一種散列演算法(Hash function),又稱為哈希演算法、消息摘要演算法,它的作用是獲取數字信息的特徵(我們有時稱之為「信息指紋)。一個任意長度的任意數字信息,通過散列演算法運算後,會產生一串固定長度(比如160bit)的數字信息,稱為散列值(或哈希值、消息摘要)。安全的散列演算法有這樣的特點:

⑴ 兩個不同數字信息產生同樣的 散列值的概率是非常小的(小到現實中幾乎無法發生);

⑵ 僅從散列值無法演推出原信息;

⑶ 原信息的微小改變,哪怕只改變一位(bit),將導致散列值的很大變化。

數字簽名要使用散列值。MD5是一種常用散列演算法,另外目前常用的散列演算法還有SHA-1。兩個不同的數字信息產生相同的散列值就是人們所說的「散列值碰撞「。散列演算法是一個將無窮維空間的信息映射到有限維空間的變換,學過數學的人都知道這不是一個一一對應的變換。實際上一個散列值可能對應有無窮多個數字信息,換言之,會有無窮多個數字信息產生同樣一個散列值。這點是研究密碼的人眾所周知的,而不像有些媒體所說的那樣,散列值是唯一的。

你可以自己嘗試MD5在線生成工具:http://www.okman.cn/tools/md5.htm
比如:數字1,它對應的MD5_32A的值為:

Ⅷ 求MD5碰撞演算法,請說明一下在短時間內找到MD5碰撞的演算法

暈。。你的問題怎麼會到我的推薦裡面來?網路太惡心了,記錄我的搜索

Ⅸ md5碰撞是什麼意思

md5簡單說是文件的指紋識別; 不同文件的md5碼是不一樣的;也有人研究這個演算法的,找到兩個不同文件但是md5一樣的,這就是md5碰撞,幾率很小。這是個不可逆演算法

Ⅹ MD5是什麼類型的(如:對稱性或非對稱性)

MD5是非對稱性的計算機雜湊演算法之一。
MD5演算法具有以下特點:
1、壓縮性:任意長度的數據,算出的MD5值長度都是固定的。
2、容易計算:從原數據計算出MD5值很容易。
3、抗修改性:對原數據進行任何改動,哪怕只修改1個位元組,所得到的MD5值都有很大區別。
4、弱抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即偽造數據)是非常困難的。
5、強抗碰撞:想找到兩個不同的數據,使它們具有相同的MD5值,是非常困難的。

熱點內容
電腦登陸加密 發布:2025-01-16 05:21:57 瀏覽:151
安卓怎麼修復閃退 發布:2025-01-16 05:21:54 瀏覽:553
易盾加密 發布:2025-01-16 05:20:51 瀏覽:893
html上傳圖片的代碼 發布:2025-01-16 05:16:55 瀏覽:600
搭建伺服器租用電信的怎麼樣 發布:2025-01-16 05:12:32 瀏覽:49
phpmysql源碼下載 發布:2025-01-16 05:12:31 瀏覽:210
python安裝依賴包 發布:2025-01-16 05:11:45 瀏覽:996
澳門雲主機品牌伺服器 發布:2025-01-16 05:06:55 瀏覽:768
資料庫設計主要內容 發布:2025-01-16 05:02:02 瀏覽:12
存儲過程如何修改 發布:2025-01-16 05:01:55 瀏覽:633