SLAA547C July 2013 – July 2021 MSP430FR5739
The algorithm starts with an initialization vector of eight 32-bit words. These values are loaded into temp variables labeled A – H. A set of equations govern how these variables are combined and manipulated. The algorithm also calls for an array of hash constants (Kt ), a message schedule (Wt ), and the functions Ch, Ma, ∑0, and ∑1. The equations and functions are given in Section 4.3.3. Figure 4-15 gives a visualization of the hashing loop. This loop is repeated 64 times until the end of the message schedule. One message schedule covers only one hashing block of the full message. Once the loop is completed, the resulting temp variables are XORed with the initialization variables to form the current message digest H0-7. If other message blocks are to be processed, the temp values are loaded with the current message digest. At the end of the loop, the current results are XORed with the previous message digest. A full explanation of the algorithm can be found in FIPS PUB 180-3.