Hầu hết các hàm băm mật mã xử lý dữ liệu theo khối nhiều byte, vì điều này hiệu quả hơn. Đối với các thuật toán sử dụng các từ 32 bit, như MD5 và SHA-256, chúng thường có kích thước 64 byte; đối với các thuật toán sử dụng các từ 64 bit, như SHA-512 hoặc BLAKE2b, nó thường là các khối 128 byte; và SHA-3 vẫn khác.
Mỗi hàm băm này chứa một hàm nén, lấy trạng thái băm trước đó (hoặc trạng thái ban đầu ở đầu) và một khối dữ liệu rồi kết hợp chúng thành trạng thái mới. Chức năng nén này chứa một số vòng nhất định; cùng một số vòng được thực hiện trên mỗi khối. Sau đó, sau khi khối cuối cùng được xử lý, giá trị băm được trích xuất từ trạng thái, trong nhiều trường hợp chỉ là bản sao của tất cả hoặc một phần dữ liệu trạng thái.
Trong các hàm Merkle-DÃ¥mgard, như MD5, SHA-256 và SHA-512, phần đệm được thực hiện với hai phần. Đầu tiên, độ dài của dữ liệu theo bit được tính toán. Trong các hàm 32 bit như MD5 và SHA-256, đây thường là giá trị 64 bit (8 byte); trong các hàm 64-bit, nó thường là giá trị 128-bit (16-byte). Dữ liệu được đệm sao cho một bit 1 được thêm vào, sau đó bao nhiêu bit 0 cần thiết để chừa chính xác khoảng trống cho độ dài. Vì vậy, đối với MD5 hoặc SHA-256, một thông báo 55 byte sẽ có một bit 1, bảy bit 0 và sau đó là độ dài. Tuy nhiên, một thông báo 56 byte sẽ có một bit 1, sáu mươi ba bit 0 để đệm khối, sau đó là bốn trăm bốn mươi tám bit 0 khác để đệm khối tiếp theo và sau đó là độ dài, vì không có khoảng trống cho cả bit 1 và độ dài trong khối hiện tại. Các thuật toán băm khác nhau đệm khác nhau; SHA-3 và BLAKE2b đều sử dụng các kỹ thuật khác với kỹ thuật này.
Đối với các vòng, có ba loại vòng khác nhau mà chúng ta thường nói đến khi xử lý một khối trong hàm nén. Có các vòng, chẳng hạn như trong MD5 và BLAKE2b, trong đó chúng tôi xử lý từng từ thông báo một lần trong mỗi vòng; MD5 có bốn vòng như vậy và BLAKE2b có 12. Ngoài ra còn có các thuật toán, như SHA-256 và SHA-512, trong đó các từ thông báo trong khối được mở rộng thành một chuỗi gồm nhiều từ (lần lượt là 64 và 80) và mỗi vòng xử lý một trong những từ mở rộng này. Trong SHA-3, chúng tôi hoạt động trên toàn bộ trạng thái với dữ liệu đã được XOR và mỗi vòng hoạt động trên toàn bộ trạng thái.
Trên thực tế, hầu như không ai sử dụng các thông báo không phải là số byte nguyên vẹn vì chúng có xu hướng bất tiện khi làm việc trên phần cứng thực. Nhưng đối với MD5 hoặc SHA-256, một thông báo 100 bit sẽ được đệm bằng 1 bit, ba trăm bốn mươi bảy bit 0 (để tạo thành 448 bit) và sau đó độ dài 64 bit sẽ được thêm vào để lấp đầy khối cuối cùng ( 512 bit hoặc 64 byte).
Trong khi bạn hỏi cụ thể về MD5, tôi cũng đã đề cập đến một số thuật toán khác ở đây vì các thuật toán khác nhau theo nhiều cách quan trọng và MD5 không còn được sử dụng nữa, vì vậy cách thức hoạt động của các thuật toán an toàn hơn sẽ khác.