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).
- ¿Dónde se usa la cola prioritaria?
- ¿Por qué en Java, la memoria es liberada por el algoritmo Mark y Sweep y no por ningún otro algoritmo?
- ¿Puede una máquina Turing aceptar una cadena de longitud 2014? ¿Por qué este problema es indecidible?
- ¿Cuál es el algoritmo más eficiente para determinar una ruta de entrega para un camión de salida que se mueve desde un punto de partida a un punto final con múltiples paradas intermedias y sin retorno al punto de partida?
- Cómo agregar números de dos listas vinculadas
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