online generador creator image hash md5 filenames random

image - generador - sha256 file hash generator



¿Alguna advertencia sobre la generación de nombres de archivo únicos para imágenes aleatorias ejecutando MD5 sobre el contenido de la imagen? (9)

Quiero generar nombres de archivo únicos por imagen, así que estoy usando MD5 para crear nombres de archivo. Dado que dos de la misma imagen pueden provenir de diferentes ubicaciones, me gustaría basar realmente el hash en el contenido de la imagen. ¿Qué advertencias presenta esto?

(haciendo esto con PHP5 por lo que vale)


¿Podría usar un UUID en su lugar?


Dado un contenido de archivo completamente aleatorio y un buen hash criptográfico, la probabilidad de que haya dos archivos con el mismo valor hash alcanza el 50% cuando el número de archivos es aproximadamente de 2 a (número de bits en la función hash / 2). Es decir, para un hash de 128 bits habrá un 50% de probabilidad de al menos una colisión cuando la cantidad de archivos llegue a 2 ^ 64.

El contenido de su archivo definitivamente no es aleatorio, pero no tengo idea de qué tan fuertemente influye en la probabilidad de colisión. Esto se llama ataque de cumpleaños, si desea buscar más en Google.

Es un juego probabilístico. Si el número de imágenes será sustancialmente menor que 2 ^ 64, probablemente estés bien. Si todavía está preocupado, usar una combinación de SHA-1 más MD5 (como sugiere otra respuesta) le permite obtener un total de 288 bits hash de alta calidad, lo que significa que tendrá un 50% de posibilidades de una colisión una vez allí. son 2 ^ 144 archivos. 2 ^ 144 es un gran número poderoso. Mighty grande. Uno podría incluso decir enorme.


Debe usar SHA-1 en lugar de MD5, porque MD5 está roto. Hay pares de archivos diferentes con el mismo hash MD5 (no teórico, estos son realmente conocidos, y existen algoritmos para generar incluso más pares). Para su aplicación, esto significa que alguien podría cargar dos imágenes diferentes que tendrían el mismo hash MD5 (o alguien podría generar ese par de imágenes y publicarlas en algún lugar de Internet de manera que dos de sus usuarios intenten subirlas más adelante, resultados confusos).


Es posible que desee examinar la tecnología que utilizan las redes P2P para identificar los archivos duplicados. Una solución que involucre MD5, SHA-1 y longitud de archivo sería bastante confiable (y probablemente exagerada).


Es un buen enfoque. Existe una posibilidad extremadamente pequeña de que dos imágenes diferentes tengan el mismo valor, pero en realidad su centro de datos tiene una mayor probabilidad de sufrir un impacto directo por un asteroide.

Una advertencia es que debe tener cuidado al eliminar imágenes. Si elimina un registro de imagen que apunta a algún archivo y también lo elimina, puede eliminar un archivo que tenga un registro diferente apuntando a la misma imagen (digamos, que pertenece a un usuario diferente).


Me parece bien, si está bien con nombres de archivo de 32 caracteres.

Editar: No utilizaría esto como la base de (digamos) la base de datos central de fotografías terroristas del FBI, ya que un atacante suficientemente motivado podría proponer una imagen que tuviera el mismo MD5 que uno existente. Si ese fuera el caso, entonces podría usar SHA1, que es algo más seguro.


Si tiene dos imágenes idénticas cargadas desde diferentes lugares, digamos una foto de archivo, entonces podría terminar sobrescribiendo el ''original''. Sin embargo, eso significa que solo está almacenando una copia, no dos.

Habiendo dicho eso, no veo ningún problema importante al hacerlo de la manera que usted describió.


Tomará mucho tiempo. ¿Por qué no les asignas identificadores secuenciales?


ImageMagick y la clase PHP imagick, que acceden a ella son capaces de interpretar imágenes de forma más subjetiva que las funciones hash por factores como el color. Hay innumerables métodos y preferencias de usuario para considerar, así que aquí hay algunos recursos que cubren algunos enfoques para ver qué se adapta a su aplicación prevista:

Cualquiera de las funciones de hash como MD5 solo intentará determinar si los archivos son idénticos, en cuanto a los bits , no para verificar la similitud visual (con un margen de error para la compresión con pérdidas o cultivos leves).