在编码期间,我使用了MD4和MD5加密技术。但是他们之间没有任何明显的安全差异。然而,他们中的大多数人更喜欢MD5,实际上是指定它。 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之间有什么区别,安全性呢?
答案 0 :(得分:2)
MD4& MD5不是加密,它们是产生128位散列值的散列函数。如果您需要加密,请使用AES
等适当的加密技术并加入"安全" MD5的一个方面,它被声明为不可用,因为有几个漏洞可能导致hash collision,最糟糕的是,使用彩虹表将密文反转回其原始值。如果您需要散列,请使用SHA-2
答案 1 :(得分:1)
MD5于1991年设计为安全替代品。 (后来在Hans Dobbertin的MD4中确实发现了弱点
MD4的安全性受到严重影响。第一次针对MD4的全面碰撞攻击于1995年发布,此后又发布了几次新的攻击。截至2007年,攻击可能在少于2个MD4哈希操作中产生冲突。
以下是MD4和MD5之间的区别:
已添加第四轮。
现在每个步骤都有一个独特的添加常数。
第2轮中的函数g从(XY v XZ v YZ)变为(XZ v Y) 不是(Z))使g不那么对称。
现在,每个步骤都会添加上一步的结果。这促进了 更快的“雪崩效应”。
在第2轮和第3轮中访问输入词的顺序是 改变了,使这些模式不那么像彼此。
每轮的转移量大致已经过优化, 产生更快的“雪崩效应”。不同回合的转变 是截然不同的。