Figure 1. Generation of message digest The output of the fourth round is added to the input of the first round (CV ,) to produce CV gy1. Figure 4. Optimized operation tree MD5 algorithm is a block-chained hashing algorithm. The hash for a block depends on both the block data and the hash of its preceding block. As a result, blocks can not be hashed in parallel. Each step consists of four additions, three component logical operations, two table lookups and one rotation. The tree of operations can be optimized by performing operations, which involve items not dependent on the previous step, early. According to Figure 3, the item that depends on the previous step is word B and hence the result of logical operation has a considerable delay. The optimized tree of operation (assuming each operation takes one unit time) will be as given in Figure 4. According to this one time unit step can be reduced [7]. By implementing a generic step of the MD5 algorithm, a looping architecture with 64 iterations would seem to provide the greatest area optimized solution. The block diagram of the iterative design is shown in Figure 5. Figure 5. Block diagram of MD5 iterative design (Iterate MD5). Figure 8. Block diagram of full-loop-unrolling design (Fullun-MD5).