h : D → R dan |D| > |R|
Ide utama dari hash adalah bahwa suatu nilai hash berlaku sebagai representasi dari data secara sederhana (disebut juga message-diggest, imprint, digital finger-print) dari suatu input string, dan dapat digunakan hanya jika nilai hash tersebut dapat diidentifikasi secara unik dengan input string tersebut. Fungsi h adalah many-to-one, sehingga memungkinkan terjadinya pasangan input dengan output sama : collision. Secara umum fungsi hash harus memiliki 2 (dua) sifat dasar yaitu :
1. Kompresi (Compression), fungsi h memetakan suatu input x dgn panjang sembarang ke output y = h(x) dgn panjang tetap n;
2. Mudah dihitung (Easy Computation), dengan diberikan h dan sebuah input x, maka y mudah dihitung.
Fungsi hash diklasifikasikan dalam 2 kelas yaitu (menurut Menezes, Oorschot dan Vanstone, 1996):
1. MDCs (Manipulation Detection Codes).
2, Message Authentication Codes (MACs).
MDCs (Manipulation Detection Codes), atau juga disebut dengan istilah modification detecton codes atau message integrity codes (MICs) yang merupakan fungsi Hash tanpa kunci. Tujuannya adalah (informal) untuk memberikan suatu imej yang representatif (disebut nilai hash) pada suatu message. Pada kelas ini input darifungsi hash hanyalah pesan yang akan dikirim dan tidak membutuhkan input kunci rahasia. MDCs banyak digunakan untuk servis integritas data khususnya dalam aplikasi skema digital-signature. Pembagian kelas dari MDCs adalah:1. One Way hash Functions (OWHFs).2. Collision resistant hash Functions (CRHFs).Contoh algoritma hash untuk MDCs diantaranya adalah : MD2, MD4, MD5, RIPE-MD, Snefru, N-Hash, Secure Hash Algoritm-1 (SHA-1) yang merupakan OWHF sedangkan MASH-1 dan MASH-2 masuk kategori CRHF.
Message Authentication Codes (MACs) MACs adalah fungsi hash untuk otentikasi data dengan teknik simetrik. Algoritma MACs mengambil dua input yang secara fungsional berbeda, sebuah pesan (message) dan sebuah kunci rahasia (maka disebut “keyed hash function”), untuk menghasilkan suatu output dengan ukuran yang tetap. Secara praktis sulit menghasilkan nilai MAC yang sama tanpa pengetahuan tentang kunci rahasia tersebut. MACs juga menyediakan servis integritas data. Contoh algoritma hash untuk aplikasi MACs adalah HMAC, MD5-MAC, MAA, Block-based MACs : CBC-MAC, RIPE-MAC, GOST; Stream-based MACs : SEAL; CRC-based MAC, dan lainnya. Pada prinsipnya MACs dapat dikonstruksi dari MDCs seperti contohnya algoritma MD5-MAC.