In cryptography, a sponge function or sponge construction is any of a class of algorithms with finite internal state that take an input bit stream of any length and produce an output bit stream of any desired length.
They can be used to model or implement many cryptographic primitives, including cryptographic hashes, message authentication codes, mask generation functions, stream ciphers, pseudo-random number generators, and authenticated encryption.
It is possible to omit the XOR operations during absorption, while still maintaining the chosen security level.
[1] In this mode, in the absorbing phase, the next block of the input overwrites the R part of the state.
For example, the Keccak cryptographic sponge with a 1600-bit state has been selected by NIST as the winner in the SHA-3 competition.
For other examples, a sponge function can be used to build authenticated encryption with associated data (AEAD),[3] as well as password hashing schemes.