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).
- Cómo generar un número aleatorio en C
- Puedo pensar en algoritmos en varias preguntas, pero cuando realmente escribo un código me enfrento a muchas dificultades. Entonces, siento que soy pobre escribiendo códigos. ¿Cómo puedo mejorar eso?
- ¿Qué algoritmo es bueno para fusionar notificaciones similares en los servicios sociales?
- ¿Hay alguna guía sobre el uso de datos sintéticos para entrenar algoritmos de visión por computadora? ¿Hay alguna investigación al respecto?
- ¿Alguien puede ayudarme a entender cómo funciona este código?
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