Por favor, dígame dos cadenas que tienen el mismo valor hash MD5

-4

Sí, sé que el MD5 es débil y no se debe utilizar. Para hacer una prueba de concepto, necesito dos cadenas con el mismo valor MD5 pero todo lo que puedo encontrar es binario. Me gusta este bonito ejemplo . Funciona bien como binario pero falla como cadena:

  

MD5 ( "d131dd02c5e6eec4693d9a0698aff95c2fcab58712467eab4004583eb8fb7f8955ad340609f4b30283e488832571415a085125e8f7cdc99fd91dbdf280373c5bd8823e3156348f5bae6dacd436c919c6dd53e2b487da03fd02396306d248cda0e99f33420f577ee8ce54b67080a80d1ec69821bcb6a8839396f9652b6ff72a70")   = > edde4181249fea68547c2fd0edd2e22f

     

MD5 ( "d131dd02c5e6eec4693d9a0698aff95c2fcab50712467eab4004583eb8fb7f8955ad340609f4b30283e4888325f1415a085125e8f7cdc99fd91dbd7280373c5bd8823e3156348f5bae6dacd436c919c6dd53e23487da03fd02396306d248cda0e99f33420f577ee8ce54b67080280d1ec69821bcb6a8839396f965ab6ff72a70")   = > e234dbc6aa0932d9dd5facd53ba0372a

Pero para mi aplicación los datos binarios no funcionan. Entonces, ¿alguien tiene dos cadenas que crean una colisión?

    
pregunta PiTheNumber 28.08.2012 - 11:12
fuente

1 respuesta

3

Su problema es que trató la cadena hexadecimal como una secuencia de caracteres ANSI (o algo similar). Pero necesitas transformarlo, para que dos caracteres hexadecimales sean tratados como un byte.

En PHP esto se convierte en:

echo MD5(hex2bin("d131dd02c5e6eec4693d9a0698aff95c2fcab58712467eab4004583eb8fb7f8955ad340609f4b30283e488832571415a085125e8f7cdc99fd91dbdf280373c5bd8823e3156348f5bae6dacd436c919c6dd53e2b487da03fd02396306d248cda0e99f33420f577ee8ce54b67080a80d1ec69821bcb6a8839396f9652b6ff72a70"));
echo "<br/>\n";
echo MD5(hex2bin("d131dd02c5e6eec4693d9a0698aff95c2fcab50712467eab4004583eb8fb7f8955ad340609f4b30283e4888325f1415a085125e8f7cdc99fd91dbd7280373c5bd8823e3156348f5bae6dacd436c919c6dd53e23487da03fd02396306d248cda0e99f33420f577ee8ce54b67080280d1ec69821bcb6a8839396f965ab6ff72a70"));

O para versiones anteriores de PHP (PHP < 5.4.0):

echo md5(pack("H*", "d131d..."));
    
respondido por el CodesInChaos 28.08.2012 - 13:16
fuente

Lea otras preguntas en las etiquetas