2014-10-27 899 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