2014-10-27 112 views
0

在編碼過程中,我使用了MD4和MD5兩種加密技術。但是他們之間沒有任何明顯的安全差異。然而,他們中的大多數更喜歡MD5,實際上是指定它。 MD5:MD4和MD5加密之間的區別

System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding(); 
MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider(); 

byte[] TDESKey = null; 

TDESKey = HashProvider.ComputeHash(UTF8.GetBytes("CXPUB001")); // ASYNC PRIVATE KEY CODE FOR DATA ENCRYPTION 

//DATA ENCRYPTION 
TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider(); 
TDESAlgorithm.Key = TDESKey; //SENDER KEY APPENDED 
TDESAlgorithm.Mode = CipherMode.ECB; 
TDESAlgorithm.Padding = PaddingMode.PKCS7; 
byte[] DataToEncrypt = UTF8.GetBytes(Message); 

那麼,什麼是差,安全明智的,使用MD4和MD5之間?

+1

這個問題更適合http://security.stackexchange.com/ – Rik 2014-10-27 09:50:28

+0

OK,謝謝你,我會盡力在那裏。 – SanyTiger 2014-10-27 09:51:31

+1

你怎麼測試「不noticable安全區別「?MD4和MD5之間 – 2014-10-27 09:52:28

回答

2

兩個MD4 & MD5是不加密,它們是產生128位散列值的散列函數。如果您需要加密,請使用適當的加密技術,如AES

並且爲了增加MD5的「使用彩虹表將密文逆轉回其原始值。如果你需要散列,使用SHA-2

+1

彩虹表是對未經處理的散列值的攻擊。要使用密碼進行加密(或密碼驗證),您應該使用(鹽漬)PBKDF,如PBKDF2,bcrypt或scrypt。哈希值的安全性與彩虹表無關,因此如果可以創建彩虹表,則哈希函數不會被破壞。如果您需要**密碼散列**,請使用PBKDF。 – 2014-10-27 23:35:00

+0

@owlstead在這個例子中,在無鹽哈希表上的彩虹表上表現不錯。實際上,我的答案旨在解釋散列和加密之間的區別,以及強調md4&md5已過時的安全性,另外值得一提的是:md5散列仍被廣泛用作文件校驗和 – 2014-10-28 01:44:11

1

MD5的目的是在1991年成爲一個安全的替代品。 (後來在MD4中發現了一些弱點,其中包括:Hans Dobbertin

MD4的安全性受到嚴重破壞,1995年發佈了第一次針對MD4的全面碰撞攻擊,自那時以來發布了若干新的攻擊。攻擊可以在不到2個MD4散列操作產生碰撞

以下是MD4和MD5之間的差異:

  1. 第四輪已添加

  2. 。現在每一步都有一個獨特的添加常數。

  3. 將第2輪中的函數g從(XY x XZ v YZ)更改爲(XZ v Y not(Z))以使g更少對稱。

  4. 每一步現在增加了在上一步的結果。這促使 更快的「雪崩效應」。

  5. 在第2回合和第3回合中訪問輸入單詞的順序是 已更改,以使這些模式彼此不太相似。

  6. 每一輪的偏移量都已近似優化, 產生更快的「雪崩效應」。不同回合 的轉變是截然不同的。

+1

如果不提及使用MD5導致的安全缺陷,則不能提供該答案。我會說有很大的相似性:兩者都被打破了。 – 2014-10-27 23:27:16