Sería un buen primer paso, suponiendo que solo intente encontrar coincidencias * EXACT * hasta el nivel de píxeles. Si hago un hash de un archivo una vez, y luego lo hago un poco por cada copia, obtendré el mismo hash cada vez. Si los archivos realmente son idénticos, puedo comparar los hashes mucho más rápido que los archivos.
El método tiene un inconveniente: el archivo en sí mismo puede considerarse como un entero entero; de hecho, así es como lo ve el algoritmo hash. El hash (en sí) es casi siempre más pequeño que el archivo. Las colisiones son una posibilidad; dos archivos diferentes producirán el mismo hash.
Con un algoritmo de hashing decente, esto es poco probable, pero sigue siendo un problema potencial, por lo que debe ser lo más pequeño posible. La pequeñez es uno de los principales objetivos de diseño de los hashes de criptografía. Por ejemplo, SHA-3 [vea mi biografía] es / era necesario debido a un equipo chino que publicó un artículo teórico sobre cómo forzar colisiones (SHA-2 / SHA-256 / SHA-512).
- ¿Qué tecnología utiliza X ?: ¿Cómo implementan las empresas de análisis (Mixpanel, KISSMetrics, etc.) el análisis de embudos?
- ¿Cuáles son los 30 algoritmos más importantes que debe conocer para la programación competitiva?
- ¿Qué nivel / conocimiento de programación debería tener para obtener el máximo provecho de CLRS? [Más detalles en mi respuesta contraída]
- ¿Cómo podemos hacer un programa para encontrar la suma y el promedio de los valores de la matriz? ¿Por favor ayuda?
- ¿Es mejor aprender estructuras de datos y algoritmos en C ++ o Java?
La prueba matemática es un subconjunto contable y adecuado de un conjunto contable en el que los miembros incluyen: los enteros y el valor hash de todos los enteros. Esto no puede ser biyectivo [1] (existe un mapeo uno a uno en ambas direcciones entre todas las versiones posibles de ambos conjuntos). Hay otro inconveniente: si los archivos difieren, un hash no me dirá en qué se diferencian, solo que lo hacen.
Notas al pie
[1] Biyección