Then M is broken up into words of length 32 bits as follows:
M = M [0] M [1] … M [ N -1]
Where each M [ i ] is 32 bit long and N º 0 mod 16. The overall algorithm proceeds as follows:
- 1. A = 67452301 hex
2. B = efcdab89 hex
3. C = 98badcfe hex
4. D = 10325476 hex
5. for i = 0 to N/16 -1 do
6. for j = 0 to 15 do
7. X [ j] = M [ 16i + j ]
8. AA = A
9. BB = B
10. CC = C
11. DD = D
12. Round1
13. Round2
14. Round3
15. A = A + AA
16. B = B + BB
17. C = C + CC
18. D = D + DD
We maintain 4 registers A , B , C , D each of length 32 bits. In each iteration of the outer for loop we process a message block X [0] X [1] … X [15] of length 512 bits to produce a message digest of lenghth 128 bits formed by concatenating the contents of those 4 register A , B , C , D .
The above algorithm of MD4 was subsequently extended to MD5 that works in 4 rounds instead of 3 rounds.