Este artículo describe la Implementación de colisión en MD5 (Xiaoyun Wang y Hongbo Yu) creada por Peter Selinger.
El algoritmo de Xiaoyun Wang y Hongbo Yu[1] puede ser utilizado para crear archivos de longitud arbitraria que tengan hash MD5 idéntico y que difieren en solo 128 bytes en algún lugar en mitad del fichero (archivo).
El método de Wang y Yu hace posible, para un vector de inicialización s, encontrar dos pares de bloques M, M' y N, N' tales que: f ( f (s, M), M') = f ( f (s, N), N') Observación: Nótese que esto funciona para cualquier vector de inicialización y no solo para el estándar.
Podemos usar esto para generar dos programas que difieren en esos bloques y tienen el mismo valor de hash con MD5 pero que se comportaran de forma muy distinta: Programa 1: Programa 2: Existe una implementación del proceso descrito en el apartado anterior creada por Patrick Stach, puede descargarse desde su web donde aparece una detallada explicación de su funcionamiento y uso en inglés.
Después compilamos este programa: Y se lo pasamos como argumento al ejecutable que nos proporciona, el programa se pone inmediatamente a buscar una colisión por nosotros: Pasadas unas horas el programa encuentra los bloques que necesita para formar la colisión.