Hàm hash một chiều thường là các hàm toán học có thể làm việc trên các chuỗi thông tin có độ dài khác nhau và tiến hành các thuật toán nén, biến đổi các thông tin đó thành một giá trị có độ dài cố định được gọi là giá trị hash. Một giá trị hash còn được gọi là một message digest. Lý do phải thực hiện các quá trình này là để tạo dấu vết (fingerprint) của thông tin. Nếu dấu vân tay có thể dùng để nhận dạng người thì giá trị hash cũng có thể dùng để xác định một thông điệp.
Nếu Kevin muốn gửi một thông điệp đến cho Maureen và anh ta muốn thông điệp đó không bị sửa đổi bất hợp pháp trên đường truyền, anh ta tính toán giá trị hash cho thông điệp đó và đính kèm vào thông điệp. Khi Maureen nhận được thông điệp, cô ta cũng tiến hành tính giá trị hash cho thông điệp bằng cách sử dụng thuật toán giống như Kevin đã dùng. Nếu giá trị hash do Maureen tính giống với giá trị hash do Kevin gửi đến, Maureen có thể chắc chắn rằng thông tin vẫn còn nguyên vẹn và không bị sửa đổi trong quá trình truyền đi. Nếu hai giá trị hash khác nhau, Maureen có thể biết được thông tin đã bị thay đổi một các vô tình hay hữu ý và cô ta có thể bỏ qua thông tin ấy.
Thông thường hàm hash là một thuật toán được công bố rộng rãi. Điều bí mật của thuật toán hash một chiều là khả năng “một chiều” của nó. Thuật toán chỉ chạy theo một chiều mà không thể chạy theo chiều ngược lại. Điều này khác với hàm một chiều dùng trong mã hoá công khai. Trong thuật toán mã hoá khoá công khai, tính an toàn được đảm bảo bởi vì nếu không biết khoá mã, rất khó có thể thực hiện chiều ngược lại để khôi phục dữ liệu plaintext; trong khi đó, hàm hash một chiều không bao giờ thực hiện được theo chiều ngược lại. Thay vì cố gắng thực hiện theo chiều ngược lại, người nhận được thông tin sẽ thực hiện hàm hash theo cách người gửi đã thực hiện rồi sau đó so sánh kết quả với nhau.
Hàm hash có thể thực hiện mà không cần bất kỳ khoá mã nào. Điều đó có nghĩa tất cả mọi người nhận được thông tin đều có thể thực hiện thuật toán hash, kiểm tra giá trị và xác định tính toàn vẹn của dữ liệu. Tuy nhiên nếu người gửi muốn chỉ có một người cụ thể mới có quyền xem giá trị hash gửi kèm theo thông tin, anh ta có thể mã hoá giá trị hash bằng một khoá mã. Giá trị hash được tạo ra với khoá mã được
gọi là mã xác thực thông tin (message authentication code - MAC).
Hình 3.5: Người nhận kiểm tra mã MAC của mình với giá trị MAC của người gửi
MAC hoàn toàn giống hàm hash một chiều, ngoại trừ giá trị hash được tạo bởi thông tin và khoá mã. Điều này đảm bảo chỉ có người nhận với khoá mã cần thiết mới xác định được tính toàn vẹn của thông điệp gửi đến.