En relación con esta pregunta: Algorithm for determining a file’s identityalgoritmo para determinar la identidad de un archivo (Optimización)
Crónica: Estoy buscando un algoritmo barato para determinar una identidad de archivos que trabaja la gran mayoría de las veces.
Seguí adelante e implementé un algoritmo que me da un "bastante único" hash por archivo.
La forma en que funciona mi algoritmo es:
Para archivos más pequeños que un cierto umbral uso el contenido de archivos completo para el hash identidad.
Para archivos mayores que el umbral, tomo N muestras aleatorias de tamaño X.
Incluyo el tamaño del archivo en los datos hash. (Es decir, todos los archivos con diferentes tamaños resultan en un hash diferente)
Preguntas:
¿Qué valores debería elegir para N y X (el número de muestras al azar debo tomar de qué tamaño?) Fui con 4 muestras de 8K cada una y no puedo copiar el algoritmo. Descubrí que aumentar la cantidad de muestras disminuye rápidamente la velocidad del algoritmo (porque las búsquedas son bastante caras)
El matemático: cómo mis archivos deben ser diferentes para que este algoritmo explote. (2 archivos diferentes con la misma longitud terminan teniendo el mismo hash)
Optimización: ¿Hay alguna manera en que pueda optimizar mi implementación concreta para mejorar el rendimiento (creo que puedo hacer unos 100 archivos por segundo en mi sistema).
¿Esta implementación parece sensata? ¿Puedes pensar en algún ejemplo del mundo real donde esto fracase? (Mi atención se centra en los archivos de medios)
Información relevante:
Gracias por su ayuda!
nitpicking: Signiture !? quieres decir Firma? –