¿Cuántos elementos aleatorios antes de que MD5 produzca colisiones?

Resuelto Ben Throop asked hace 16 años • 8 respuestas

Tengo una biblioteca de imágenes en Amazon S3. Para cada imagen, md5 la URL de origen en mi servidor más una marca de tiempo para obtener un nombre de archivo único. Como S3 no puede tener subdirectorios, necesito almacenar todas estas imágenes en una única carpeta plana.

¿Debo preocuparme por las colisiones en el valor hash MD5 que se produce?

Bonificación: ¿Cuántos archivos podría tener antes de empezar a ver colisiones en el valor hash que produce MD5?

Ben Throop avatar Oct 14 '08 22:10 Ben Throop
Aceptado

La probabilidad de que solo dos hashes colisionen accidentalmente es 1/2 128 , que es 1 entre 340 undecillones 282 decillones 366 nonillones 920 octillones 938 septillones 463 sextillones 463 quintillones 374 cuatrillones 607 billones 431 mil millones 768 millones 211 mil 456.

Sin embargo, si conserva todos los hashes, la probabilidad es un poco mayor gracias a la paradoja del cumpleaños . Para tener un 50% de posibilidades de que cualquier hash colisione con cualquier otro hash, necesitas 2 64 hashes. Esto significa que para provocar una colisión, en promedio, necesitarás procesar 6 mil millones de archivos por segundo durante 100 años .

Kornel avatar Nov 13 '2008 22:11 Kornel

S3 puede tener subdirectorios. Simplemente coloque un "/" en el nombre de la clave y podrá acceder a los archivos como si estuvieran en directorios separados. Lo uso para almacenar archivos de usuario en carpetas separadas según su ID de usuario en S3.

Por ejemplo: "mybucket/users/1234/somefile.jpg". No es exactamente lo mismo que un directorio en un sistema de archivos, pero la API de S3 tiene algunas características que le permiten funcionar casi igual. Puedo pedirle que enumere todos los archivos que comienzan con "usuarios/1234/" y me mostrará todos los archivos en ese "directorio".

davr avatar Oct 14 '2008 15:10 davr