Introduction
Sponge function is a function used in cryptography. It receives an input of a certain length, and then outputs an output of a certain length, which contains a finite number of internal states.
Because of the powerful function of the sponge function, it can be used to model and implement many cryptographic primitives, including password hashing, message authentication code, generating mask, stream password, pseudo-random number generator, etc.
This article will explain the structure of the sponge function.
Structure of Sponge Function
Let's first look at the structure diagram of a sponge function:
This function is divided into two parts, the left part is called the absorption part, and the right part is called the output part. One sucks and the other sucks, like a sponge, so it is called a sponge function.
P represents the input string, and Z represents the output string.
A sponge function consists of three parts, namely state, function f and padding function.
The state is the r+c part of the above figure, r is called Bitrate , and c is called Capacity .
P is divided into n parts, and each part will be XORed with Bitrate. If the length of P is not an integer multiple of Bitrate, it needs to be filled with the Pad function.
In each round, the result of the XOR operation between Bitrate and P is taken as the latest Bitrate, and then a new state is generated, and then this state is replaced by f(state).
The function f is a mapping from n {0,1} to n {0,1}.
It goes on one round after another until all P's are involved in the calculation.
The output part is to perform the f operation on the final generated state, and each operation takes the Bitrate part as the output to obtain the final output.
Sponge function application
Because of the excellent characteristics of sponge function, it is used in many ways. For example, the implementation algorithm Keccak of SHA-3 is the sponge function used.
By replacing f and multiple rounds of permutation, the sponge function can generate a very secure cryptographic algorithm, so it has been widely used.
This article has been included in http://www.flydean.com/36-sponge-function/
The most popular interpretation, the most profound dry goods, the most concise tutorial, and many tips you don't know are waiting for you to discover!
Welcome to pay attention to my official account: "Program those things", know technology, know you better!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。