Consulta sobre MD5Checksum

Hola a todos, estoy mirando de hacerme una mini app que coja archivos de mi disco duro, les calcule el MD5 y los guarde. La idea es que vaya comprobando por archivo el MD5 y si ese archivo ya ha sido traspasado antes.

Pero mi duda es se puede dar el caso de que el Checksum se repita para archivos que son diferentes? Si es asi, que otra forma hay fiable al 100% para mediante algo igual al checksum comparar los archivos¿
sodark escribió:Pero mi duda es se puede dar el caso de que el Checksum se repita para archivos que son diferentes? Si es asi, que otra forma hay fiable al 100% para mediante algo igual al checksum comparar los archivos¿

No, no se va a dar el caso.
sodark escribió:Es que tenia entendido eso , pero leyendo

http://es.wikipedia.org/wiki/MD5#Seguridad

http://es.wikipedia.org/wiki/Colisi%C3%B3n_(hash)

me ha hecho dudar.


y entiendes lo que has leido?

Siempre que usas un hash, cualquier tipo de hash a menos que sea mas grande que el fichero, en cuyo caso el hash de poco sirve, xdd, puede haber colisiones, es decir dos ficheros distintos tengan el mismo hash.

Si está bien diseñado el hash, la probabilidad de que dos ficheros tengan el mismo hash es de 1/tamaño del hash. Además se busca que dado un hash generar un fichero que tenga el mismo hash sea dificil (que haya que realizarlo por fuerza bruta, es decir probando al azar, por lo que el numero de ficheros medios necesarios para encontrar una coincidencia es de tamaño del hash/2)

Que sea vulnerable/roto el hash, en este caso md5, significa que hay técnicas que permiten encontrar una colisión sin aplicar fuerza bruta(tamaño del hash/2) (Es decir no hay que probar 2^127, sino menos, con reducir en uno el orden de magnitud ya se considera roto, aunque en la practica siga siendo "imposible" computacionalmente, que no es el caso)

Así que para lo que necesitas sirve, a menos que seas un conspiparanoico, que entonces nada es suficiente.
Si te quedas mas tranquilo, puedes usar un checksum sha256 o sha512 XD
JanKusanagi escribió:Si te quedas mas tranquilo, puedes usar un checksum sha256 o sha512 XD


Pues fuera coñas voy a pegarle un vistazo. Si no es muy costoso en tiempo ( lo hara un i7 ) puede que lo haga jajaja.

Aun así gracias a todos por las respuestas.
JanKusanagi escribió:Si te quedas mas tranquilo, puedes usar un checksum sha256 o sha512 XD

Posiblemente también tengan un backdoor para que Obana sepa que tienes en el PC
Cualquier hash con menos bits que el archivo original puede producir colisiones; es decir, puede dar falsos positivos; Que dos archivos tengan el mismo hash no quiere decir que sean iguales (aunque en la inmensa mayoría de casos lo serán). Lo que no puede dar nunca es un falso negativo (Si dos archivos no tienen el mismo hash es seguro que serán diferentes).

Por otro lado, lo que quieres hacer ya lo hacen varias aplicaciones incluyendo algunas de software libre, por lo que puedes ver cómo hacen esas comprobaciones. También tienes los sistemas de control de versiones (Git, Mercurial, SVN...) que también tienen que realizar esas comprobaciones, por si quieres coger ideas.
7 respuestas