SHA1 es definitivamente más preciso que CRC32, solo vea la tabla a continuación:
(Imagen tomada de un gran artículo: Hash Collision Probabilities).
CRC32 es de 32 bits, SHA1 es de 160 bits. Entonces, si marca 100 archivos, habrá aprox. 1 en un millón de posibilidades de que para dos de ellos los hashes CRC32 colisionen e informen los archivos como duplicados cuando no lo estén. Por otro lado, con SHA1 la posibilidad será de 9 órdenes de magnitud menos: aprox. 1 en 10 ^ 15.
- ¿Cuáles son algunas aplicaciones importantes de la teoría de juegos?
- ¿Qué programa puedo usar para dibujar una caricatura en un bloc de dibujo?
- ¿Qué son las soluciones de software de Recursos Humanos?
- ¿Es segura la aplicación Sarahah?
- ¿Cuáles son los 10 mejores programas para la conversión de video?
Sin embargo, SHA1 también es más complejo de calcular, mientras que CRC32 es bastante simple. Puede tener sentido emplear ambos: CRC32 primero, y luego SHA1 para asegurarse de que los archivos con los mismos hash CRC32 sean duplicados entre sí.
Pero si está escribiendo una utilidad que encontrará y eliminará archivos duplicados, piense si puede permitirse incluso una probabilidad tan minúscula de un falso positivo. Probablemente tendrá que hacer una comparación bit a bit de los archivos como verificación final.
Actualización: también considere que para archivos grandes, el método más eficiente es no usar hashes de todo el archivo, sino leer y hash los archivos por bloques. De esta manera, podrá dejar de verificar tan pronto como llegue al primer bloque diferente.