Khối dữ liệu đầu vào xcó chiều dài hữu hạn tùy ý sẽ đƣợc phân thành các khối con liên tiếp có chiều dài cố định r, giả sử đƣợc đánh số x1, x2,…xm. Tuy nhiên do chiều dài của của khối dữ liệu ban đầu x là tùy ý, do đó cần phải thêm vào dữ liệu ban đầu một số bit phụ sao cho tổng số bit của khối dữ liệu x’ sau khi thêm vào sẽ là bội số của r. Ngoài ra số bit thêm vào thƣờng chứa một khối bit (có chiều dài cố định trƣớc, thƣờng là 64 bit) xác định chiều dài thực của khối bit dữ liệu khi chƣa thêm các bít phụ [1].
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
Tiếp theo, lần lƣợt cắt các khối con r bit từ khối mở rộng x’. Mỗi khối con r bít xi lần lƣợt bƣớc qua một hàm nén f của hàm băm h(x). Tại bƣớc thứ i, hàm nén f nhận dữ liệu đầu vào là xi và kết quả trung gian của bƣớc trƣớc đó (bƣớc i-1) để tạo đầu ra là kết quả trung gian bƣớc thứ i, ký hiệu là Hi. Kết quả trung gian tại mỗi bƣớc Hi là một chuỗi bít có độ dài cố định bằng n>0.
Kết quả kí hiệu IV là giá trị ban đầu (cho H0) thì quá trình lặp xử lý dãy các khối con x1, x2, … xm đƣợc mô tả:
H0 = IV
Hi = f(Hi-1,XI) (i=1,2,...,m) h(x)= g(Hm)
- Các biến Hi là các biến dây chuyền
- Hàm g(x) lấy biến dây chuyền cuối cùng để tạo ra mã băm cuối cùng cần tìm. Trong hầu hết các thuật toán g(x) thƣờng đƣợc chọn là ánh xạ đồng nhất tức là g(Hm)= Hm
- Khâu then chốt trong xây dựng hàm băm là thiết kế hàm nén f
- Giá trị của hàm băm mật mã của một thông điệp đƣợc gọi là message digest (MD).