<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://en.zaoniao.it/index.php?action=history&amp;feed=atom&amp;title=Sponge_function</id>
	<title>Sponge function - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://en.zaoniao.it/index.php?action=history&amp;feed=atom&amp;title=Sponge_function"/>
	<link rel="alternate" type="text/html" href="http://en.zaoniao.it/index.php?title=Sponge_function&amp;action=history"/>
	<updated>2026-05-15T09:02:52Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>http://en.zaoniao.it/index.php?title=Sponge_function&amp;diff=6951&amp;oldid=prev</id>
		<title>Admin: Created page with &quot;'''Sponge function''' or '''sponge construction''' is a class of algorithms with finite internal state that take an input bit stream of an...&quot;</title>
		<link rel="alternate" type="text/html" href="http://en.zaoniao.it/index.php?title=Sponge_function&amp;diff=6951&amp;oldid=prev"/>
		<updated>2019-07-19T12:55:21Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Sponge function&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;sponge construction&amp;#039;&amp;#039;&amp;#039; is a class of &lt;a href=&quot;/index.php?title=Algorithm&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Algorithm (page does not exist)&quot;&gt;algorithms&lt;/a&gt; with finite &lt;a href=&quot;/index.php?title=State_(computer_science)&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;State (computer science) (page does not exist)&quot;&gt;internal state&lt;/a&gt; that take an input &lt;a href=&quot;/index.php?title=Bit_stream&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Bit stream (page does not exist)&quot;&gt;bit stream&lt;/a&gt; of an...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''Sponge function''' or '''sponge construction''' is a class of [[algorithm]]s with finite [[state (computer science)|internal state]] that take an input [[bit stream]] of any length and produce an output bit stream of any desired length. Sponge functions have both theoretical and practical uses. They can be used to model or implement many [[cryptographic primitive]]s, including [[cryptographic hash]]es, [[message authentication codes]], [[mask generation function]]s, [[stream cipher]]s, [[pseudo-random number generator]]s and [[authenticated encryption]].&lt;br /&gt;
&lt;br /&gt;
==Construction==&lt;br /&gt;
A sponge function is built from three components:&lt;br /&gt;
&lt;br /&gt;
* a state memory, ''S,'' containing ''b'' bits, &lt;br /&gt;
* a function, ''f'', of fixed length that permutes or transforms the state memory&lt;br /&gt;
* a padding function ''P''&lt;br /&gt;
&lt;br /&gt;
The state memory is divided into two sections: one of size ''r'' (the bitrate) and the other of size ''c'' (the capacity). These sections are denoted ''R'' and ''C'' respectively.&lt;br /&gt;
&lt;br /&gt;
The padding function appends enough bits to the input string so that the length of the padded input is a whole multiple of the bitrate, ''r.'' The padded input can thus be broken into ''r''-bit blocks.&lt;br /&gt;
&lt;br /&gt;
===Operation===&lt;br /&gt;
&lt;br /&gt;
The sponge function operates as follows:&lt;br /&gt;
&lt;br /&gt;
*The state ''S'' is initialized to zero&lt;br /&gt;
*The input string is padded. This means the input p is transformed into blocks of ''r'' bits using the padding function P.&lt;br /&gt;
*R is XORed with the first ''r''-bit block of padded input&lt;br /&gt;
*S is replaced by ''f''(S)&lt;br /&gt;
*R is XORed with the next ''r''-bit block of padded input (if any)&lt;br /&gt;
*S is replaced by ''f''(S)&lt;br /&gt;
*…&lt;br /&gt;
&lt;br /&gt;
The process is repeated until all the blocks of the padded input string are used up (&amp;quot;absorbed&amp;quot; in the [[Sponge (material)|sponge]] metaphor).&lt;br /&gt;
&lt;br /&gt;
The sponge function output is now ready to be produced (&amp;quot;squeezed out&amp;quot;) as follows:&lt;br /&gt;
*The R portion of the state memory is the first ''r'' bits of output &lt;br /&gt;
* If more output bits are desired, S is replaced by ''f''(S)&lt;br /&gt;
*The R portion of the state memory is the next ''r'' bits of output&lt;br /&gt;
*…&lt;br /&gt;
&lt;br /&gt;
The process is repeated until the desired number of output bits are produced. If the output length is not a multiple of ''r'' bits, it will be truncated.&lt;br /&gt;
&lt;br /&gt;
Another metaphor describes the state memory as an &amp;quot;[[entropy pool]]&amp;quot;, with input &amp;quot;poured into&amp;quot; the pool, and the transformation function referred to as &amp;quot;stirring the entropy pool&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Note that input bits are never XORed into the C portion of the state memory, nor are any bits of C ever output directly. The extent to which C is altered by the input depends entirely on the transformation function ''f.'' In hash applications, resistance to [[Collision attack|collision]] or [[preimage attack]]s depends on C, and its size, the &amp;quot;capacity&amp;quot; ''c,'' is typically twice the desired resistance level.&lt;br /&gt;
&lt;br /&gt;
===Duplex construction===&lt;br /&gt;
&lt;br /&gt;
It is also possible to absorb and squeeze in an alternating fashion. This operation is called the duplex construction or duplexing. It can be the basis of a single pass authenticated encryption system.&lt;br /&gt;
&lt;br /&gt;
*The state ''S'' is initialized to zero&lt;br /&gt;
*R is XORed with the first ''r''-bit block of the input&lt;br /&gt;
*S is replaced by ''f''(S)&lt;br /&gt;
*R is now the first ''r'' bits of the output.&lt;br /&gt;
*R is XORed with the next ''r''-bit block of the input&lt;br /&gt;
*S is replaced by ''f''(S)&lt;br /&gt;
*R is now the next ''r'' bits of the output.&lt;br /&gt;
*…&lt;br /&gt;
&lt;br /&gt;
===Overwrite mode===&lt;br /&gt;
&lt;br /&gt;
It is possible to omit the xor operations during absorption, while still maintaining the chosen [[security level]].&lt;br /&gt;
&lt;br /&gt;
The sponge construction can also be used to build practical cryptographic primitives. For example, [[Keccak]] is a cryptographic sponge with a 1600-bit state. It has been selected by [[NIST]] as the winner in the [[SHA-3 competition]]. The strength of Keccak derives from the intricate, multi-round permutation ''f'' that its authors developed. The [[RC4]]-redesign called [[Spritz (cipher)|Spritz]] refers to the sponge-construct to define the algorithm.&lt;br /&gt;
&lt;br /&gt;
For another example, a sponge function can be used to build [[authenticated encryption]] with associated data (AEAD).&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
&lt;br /&gt;
[http://wikipedia.org/ http://wikipedia.org/]&lt;br /&gt;
&lt;br /&gt;
[[Category:Cryptography]]&lt;br /&gt;
[[Category:Cryptographic algorithms]]&lt;br /&gt;
==See Also on BitcoinWiki==&lt;br /&gt;
* [[JOYS]]&lt;br /&gt;
* [[MeFy]]&lt;br /&gt;
* [[LOVR Pre-ICO]]&lt;br /&gt;
* [[WallChain]]&lt;br /&gt;
* [[Travelertoken]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
</feed>