Diferencia entre encriptación MD4 y MD5

0

Durante la codificación, he utilizado las técnicas de encriptación MD4 y MD5. Pero no ha habido ninguna diferencia de seguridad notable entre ninguno de ellos. Y sin embargo, la mayoría de ellos prefieren MD5, de hecho lo especifican. 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);

Entonces, ¿cuál es la diferencia, en cuanto a seguridad, entre el uso de MD4 y MD5?

    
pregunta SandyShores 27.10.2014 - 10:53
fuente

2 respuestas

17

MD4 y MD5 son no algoritmos de cifrado . Son hash unidireccional función Diseñado para criptografía . Es importante que entiendas la diferencia.

MD5 es una versión ligeramente modificada de MD4 que mejora su seguridad un poco .

Otra cosa que es importante entender es que ninguna de estas funciones se considera segura para su uso en criptografía: MD4 ha sido considerado muy inseguro desde el comienzo de los años 90 y MD5 es conocido como inseguro desde el comienzo de 2000's.

A menos que realmente tenga que usar estas funciones por razones de compatibilidad, no las use en su código, especialmente MD4 .

Si puede, use una de las variantes SHA-2 (.NET Framework los aplica a todos ) o, si puede No, al menos use SHA-1 temporalmente, lo cual es teóricamente vulnerable pero para el cual aún no hay un ataque práctico . Sin embargo, debe comprender que el soporte para SHA-1 desaparecerá en muchos sistemas también muy pronto.

    
respondido por el Stephane 27.10.2014 - 11:16
fuente
5
  

la mayoría de ellos prefiere MD5, de hecho, especifíquelo

Bueno, MD5 no es más que una función de hash criptográfica maliciosa, mientras que MD4 es una función de hash criptográfica mega-comicamente cómicamente, egre mega. (3DES es un poco roto también FWIW.)

Sin embargo, además de los antecedentes de la respuesta de Stephane:

  

TDESKey = HashProvider.ComputeHash (UTF8.GetBytes ("CXPUB001"));

En su caso, la diferencia entre MD4 y MD5 probablemente no importa porque no parece que esté utilizando el hash para fines criptográficos. Simplemente lo está utilizando como una función de derivación de clave de utilidad para obtener una contraseña de longitud variable a una matriz de bytes de ancho fijo adecuada para su uso como material clave.

En este caso, el hash no proporcionaría ninguna medida de seguridad que pudiera verse comprometida por la debilidad del hash. Si quisiera que esto fuera una medida de seguridad (es decir, anticipa que un atacante podría tener TDESKey y no quiere que puedan derivar "CXPUB001" rápidamente), entonces necesitará un mucho más fuerte / forma de hash más lenta que MD4 o MD5.

  

TDESAlgorithm.Mode = CipherMode.ECB;

Sí, eso no suena prometedor, y tampoco la aparente falta de firma. Si se trata de una aplicación real, probablemente debería considerar usar algún sistema de cifrado conocido en su lugar. Consulte la sección si está escribiendo las letras AES en su código. .. , cuyo ejemplo "malo" es casi exactamente lo que estás haciendo.

    
respondido por el bobince 27.10.2014 - 19:51
fuente

Lea otras preguntas en las etiquetas