Menghitung CRC (atau, lebih baik, sha1sums) pada kedua file membutuhkan membaca setiap byte. Jika Anda melakukan perbandingan byte-by-byte, Anda dapat berhenti segera setelah Anda melihat ketidakcocokan - dan Anda tidak perlu khawatir tentang dua file berbeda yang kebetulan memiliki checksum yang sama (meskipun itu tidak mungkin untuk sha1sum) . Jadi jika Anda melakukan perbandingan secara lokal, perbandingan byte-by-byte setidaknya akan secepat perbandingan checksum (kecuali jika Anda sudah menghitung checksumnya).
Di sisi lain, perbandingan checksum berguna ketika Anda membandingkan file yang tidak berada di mesin yang sama; checksum dapat dihitung secara lokal, dan Anda tidak perlu mentransfer seluruh konten melalui jaringan.
Pendekatan hybrid juga dimungkinkan. Misalnya, Anda dapat menghitung dan membandingkan checksum untuk dua file sekaligus, yang dapat menghindari membaca seluruh file ( jika berbeda) sementara juga menghindari mentransmisikan seluruh file di seluruh jaringan. The protokol rsync melakukan sesuatu seperti ini.
Perhatikan bahwa menggunakan CRC sederhana memberi Anda peluang tabrakan, seperti yang disebutkan Dave Rager dalam jawabannya. Gunakan setidaknya sha1sum, atau bahkan sesuatu yang lebih baru. (Jangan mencoba untuk membuat algoritma hashing Anda sendiri; orang-orang yang mengembangkan sha1sum tahu lebih banyak tentang hal ini daripada kita berdua.)
Adapun kemungkinan tabrakan, jika Anda menggunakan hash yang layak seperti sha1sum Anda cukup banyak tidak perlu khawatir tentang hal itu, kecuali seseorang secara sengaja dan mahal membangun file yang sha1sums bertabrakan (menghasilkan tabrakan tersebut tidak layak ketika saya pertama kali menulis ini , tetapi kemajuan sedang dibuat ). Mengutip "Pro Git" Scott Chacon , bagian 6.1 :
Berikut ini contoh untuk memberi Anda gambaran tentang apa yang diperlukan untuk mendapatkan tabrakan SHA-1. Jika semua 6,5 miliar manusia di Bumi memprogram, dan setiap detik, masing-masing menghasilkan kode yang setara dengan seluruh sejarah kernel Linux (1 juta objek Git) dan mendorongnya ke dalam satu repositori Git yang sangat besar, akan membutuhkan waktu 5 tahun hingga repositori itu mengandung cukup banyak objek untuk memiliki probabilitas 50% dari satu tabrakan objek SHA-1. Ada kemungkinan yang lebih tinggi bahwa setiap anggota tim pemrograman Anda akan diserang dan dibunuh oleh serigala dalam insiden yang tidak berhubungan pada malam yang sama.
Ringkasan:
Perbandingan byte-by-byte baik untuk perbandingan lokal. sha1sum baik untuk perbandingan jarak jauh, dan tidak memberikan peluang positif palsu yang signifikan.