- Advanced Blockchain Development
- Imran Bashir Narayan Prusty
- 284字
- 2021-06-24 14:05:01
Design of SHA-256
SHA-256 has the input message size < 264-bits. Block size is 512-bits, and it has a word size of 32-bits. The output is a 256-bit digest.
The compression function processes a 512-bit message block and a 256-bit intermediate hash value. There are two main components of this function: the compression function and a message schedule.
The algorithm works as follows, in eight steps:
- Preprocessing:
-
- Padding of the message is used to adjust the length of a block to 512-bits if it is smaller than the required block size of 512-bits.
- Parsing the message into message blocks, which ensures that the message and its padding is divided into equal blocks of 512-bits.
- Setting up the initial hash value, which consists of the eight 32-bit words obtained by taking the first 32-bits of the fractional parts of the square roots of the first eight prime numbers. These initial values are randomly chosen to initialize the process, and they provide a level of confidence that no backdoor exists in the algorithm.
- Hash computation:
-
- Each message block is then processed in a sequence, and it requires 64 rounds to compute the full hash output. Each round uses slightly different constants to ensure that no two rounds are the same.
- The message schedule is prepared.
- Eight working variables are initialized.
- The intermediate hash value is calculated.
- Finally, the message is processed, and the output hash is produced:
![](https://epubservercos.yuewen.com/B6C39C/19470378701490006/epubprivate/OEBPS/Images/8898ab05-ef16-472b-a4db-53c6dc83e2eb.jpg?sign=1738990504-smwifBle51BmcogGb9nMMlmj1jP4aGvT-0-732bb0807f8109df11ba3c87fa080e1f)
One round of a SHA-256 compression function
In the preceding diagram, a, b, c, d, e, f, g, and h are the registers. Maj and Ch are applied bitwise. ∑0 and ∑1 performs bitwise rotation. Round constants are Wj and Kj, which are added, mod 232.