Perbedaan antara fungsi kode hash dan checksum adalah, keduanya dirancang untuk tujuan yang berbeda.
Sebuah checksum digunakan untuk mengetahui apakah sesuatu di masukan telah berubah.
Kode hash digunakan untuk mengetahui apakah sesuatu dalam input telah berubah dan memiliki "jarak" sebanyak mungkin antara nilai kode hash individu.
Selain itu, mungkin ada persyaratan lebih lanjut untuk fungsi hash, yang bertentangan dengan aturan ini, seperti kemampuan untuk membentuk hierarki / klaster / keranjang nilai kode hash lebih awal.
Dan jika Anda menambahkan beberapa pengacakan awal bersama, Anda mendapatkan konsep untuk enkripsi / pertukaran kunci modern.
Tentang Probabilitas:
Sebagai contoh, mari kita asumsikan bahwa data masukan sebenarnya selalu berubah (100% dari waktu). Dan anggaplah Anda memiliki fungsi hash / checksum yang "sempurna", yang menghasilkan nilai hash / checksum 1-bit. Oleh karena itu, Anda akan mendapatkan nilai hash / checksum yang berbeda, 50% dari waktu, untuk data masukan acak.
Jika tepat 1 bit dalam data masukan acak Anda telah berubah, Anda akan dapat mendeteksi 100% waktu tersebut, tidak peduli seberapa besar data masukan tersebut.
Jika 2 bit dalam data masukan acak Anda telah berubah, kemungkinan Anda untuk mendeteksi "perubahan" dibagi 2, karena kedua perubahan tersebut dapat saling menetralkan, dan tidak ada fungsi hash / checksum yang akan mendeteksi bahwa 2 bit sebenarnya berbeda dalam data masukan .
...
Artinya, Jika jumlah bit dalam data input Anda beberapa kali lebih besar dari jumlah bit dalam nilai hash / checksum Anda, kemungkinan Anda untuk benar-benar mendapatkan nilai hash / checksum yang berbeda, untuk nilai input yang berbeda, berkurang dan bukan a konstan .