Hình 2 .1 Mô hình mã hóa đối xứng
Hình 2.5 Cấu trúc tổng quát của hàm băm
Có rất nhiều thuật toán hàm băm cho đến nay sử dụng chung một cấu trúc cơ bản cụ thể gồm các bƣớc nhƣ sau:
- Tiền xử lý
• Bộ đệm tin nhắn/thông điệp.
• Phân tích thông điệp đệm thành các khối m bits. • Thiết lập giá trị khởi tạo bởi hàm băm.
- Thuật toán băm bao gồm:
• Tạo ra các trạng thái từ thông điệp đệm (cùng với hàm băm, hằng số, chiều dài cố định)
• Kết quả giá trị băm dùng để xác định bản tóm tắt của thông điệp.
Bƣớc 1: Phân chia thông điệp đầu vào có chiều dài hữu hạn thành các khối thông điệp con liên tiếp có chiều dài cố định r (giả sử m1,m2,m3, ..,mk).
Bƣớc 2: Do m có độ dài bất kỳ nên luôn có một bƣớc thêm bits phụ sao cho chiều dài chuỗi mới m chia hết cho r (trong các bits thêm thƣờng thêm 64 bits để lƣu lại chiều dài ban đầu của chuỗi trƣớc khi chèn).
Bƣớc 3: Đƣa khối thông điệp con m1,m2,m3, ..,mk sẽ lần lƣợt đi qua một hàm nén của hàm băm b(m).
Bƣớc 4: Kết quả của khối thứ mi-1 sau khi đi qua hàm nén sẽ là nguồn dữ liệu vào cho bƣớc thứ tiếp theo.
Thiết kế thuật toán Hash
Một hàm băm là một hàm toán học gồm hai khối kích thƣớc cố định của dữ liệu để tạo ra một mã băm. Mã băm này tạo thành một phần của thuật toán băm.Thành phần đầu tiên là hàm nén nhận đầu vào là một chuỗi có chiều dài bất kì và giá trị chaining variable và cho đầu ra là chuỗi có chiều dài cố định. Thành phần thứ hai là hàm chuẩn chuỗi đầu vào, hàm này có nhiệm vụ biến chuỗi đầu vào có chiều dài bất kì thành chuỗi các bits, mà chuỗi này là có chiều dài là bội số của các khối message block (có chiều dài là 512 bit hoặc 1024 bits). Ở thời điểm bắt đầu giá trị khởi tạo và giá trị cuối cùng của các chaining variable chính là giá trị của hàm băm. Hình minh họa hàm băm.