Để lấy một bộ phận nhỏ của một thông điệp, ta sử dụng một phương pháp toán học gọi là phương pháp hàm băm (Hash function) là một giải thuật toán học (một ánh xạ một - một (một chiều)), cho ứng với mỗi khối dữ liệu (một dãy bit hay một đối tượng trong lập trình hướng đối tượng của thông điệp gốc) một giá trị băm duy nhất.
Chú ý ở đây tính một chiều có nghĩa là: Mỗi khối dữ liệu gốc qua một hàm băm sẽ cho một giá trị băm duy nhất, tuy vậy có thể có một giá trị băm ứng với hai khối dữ liệu gốc khác nhau vì vậy khơng thể từ giá trị băm tìm ngược lại khối dữ liệu đã sinh ra nó, trường hợp qua một hàm
băm H, nếu có hai khối dữ liệu gốc nào đó cho cùng một giá trị băm thì ta gọi đấy là một sự đụng độ. Tuy nhiên điều quan trọng là: Nếu hai giá trị băm khác nhau thì chắc chắn hai khối dữ liệu tạo ra chúng là khác nhau. Vì vậy, người nhận có thể tính lại giá trị băm của thơng điệp nhận được rồi so sánh với giá trị tính được khi giải mã chữ ký số để kiểm tra: nếu hai giá trị khác nhau thì có thể khẳng định nội dung thơng điệp đã bị thay đổi.
Một hàm băm được đánh giá là tốt nếu số đụng độ xảy ra rất nhỏ (xác suất rất thấp, hầu như khơng thể xảy ra). Một vài kỹ tḥt tính tốn chẳng hạn như phân bố xác suất Poisson (phân bố xác suất tiệm cận cho các sự kiện hiếm khi xảy ra) có thể dùng để phân khả năng xảy ra đụng độ của những hàm băm khác nhau đối với những nhóm dữ liệu khác nhau. Về lý thuyết thì nói chung với mọi nhóm dữ liệu đều tồn tại một hàm băm được xem như là hàm băm “hoàn hảo” nhất cho nhóm dữ liệu đó. Một hàm băm hoàn hảo (theo định nghĩa) là hàm băm mà đối với mọi dữ liệu trong nhóm đang xét khơng tạo ra những giá trị băm trùng nhau. Nhưng trong thực tế rất khó để tìm được hàm băm hoàn hảo cho mỗi nhóm dữ liệu nên người ta thường bằng lòng những hàm băm “gần hoàn hảo” nghĩa là chỉ tạo ra một số rất ít đụng độ đối với từng nhóm dữ liệu (có thể kiểm tra được).