Hashing adalah mekanisme yang digunakan untuk menjamin integritas dari data. Hashing didasarkan pada fungsi matematika satu arah: fungsi yang relatif mudah dihitung, tetapi sangat sulit untuk dibalik. Menggiling kopi adalah contoh yang baik dari fungsi satu arah: Sangat mudah untuk menggiling biji kopi, tetapi hampir tidak mungkin untuk mengembalikan semua potongan kecil untuk membangun kembali biji asli.
Gambar di atas ini menggambarkan bagaimana hashing dilakukan. Data dengan panjang dan ukuran tertentu merupakan input untuk fungsi hash, dan hasil dari fungsi hash adalah hash dengan panjang yang tetap (fixed length), yang dikenal sebagai "digest" atau "fingerprint" Ketika data yang sama digunakan fungsi algoritma hash sebanyak dua kali , hasilnya akan identik dan menghasilkan nilai hash yang sama. Setiap modifikasi kecil pada data menghasilkan output yang sangat berbeda. Karakteristik ini sering disebut sebagai efek longsoran salju (avalache effect). Data dianggap otentik jika hasil dari hash menghasilkan nilai hash sesuai yang diharapkan. Karena algoritma hash menghasilkan output dengan panjang tetap, ada keterbatasan dari jumlah output. Ada kemungkinan untuk dua input yang berbeda untuk menghasilkan output yang identikyang disebut dengan "hash collision".
Hashing sendiri mirip dengan perhitungan CRC checksum, tetapi jauh lebih kuat secara kriptografi. CRC dirancang untuk mendeteksi kesalahan yang terjadi secara acak dalam data digital di mana algoritma hash dirancang untuk menjamin integritas data bahkan ketika modifikasi data disengaja dengan tujuan untuk mengirimkan data palsu sebagai otentik. Satu perbedaan utama adalah ukuran "digest" yang dihasilkan. Checksum CRC relatif kecil, seringkali 32 bit. Algoritma hash yang umum digunakan menghasilkan "digest" dalam kisaran 128 hingga 512 bit panjangnya. Secara relatif lebih mudah bagi penyerang untuk menemukan dua input dengan nilai-nilai checksum 32-bit yang identik daripada menemukan dua input dengan intestasi identik 128 hingga 512 bit.