<?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=SipHash</id>
	<title>SipHash - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://en.zaoniao.it/index.php?action=history&amp;feed=atom&amp;title=SipHash"/>
	<link rel="alternate" type="text/html" href="http://en.zaoniao.it/index.php?title=SipHash&amp;action=history"/>
	<updated>2026-05-15T10:22:37Z</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=SipHash&amp;diff=6906&amp;oldid=prev</id>
		<title>Admin: Created page with &quot;'''SipHash''' is an Add-Rotate-Xor (ARX) based family of pseudorandom functions created by Jean-Philippe Aumasson and Daniel J. B...&quot;</title>
		<link rel="alternate" type="text/html" href="http://en.zaoniao.it/index.php?title=SipHash&amp;diff=6906&amp;oldid=prev"/>
		<updated>2019-07-16T09:29:47Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;SipHash&amp;#039;&amp;#039;&amp;#039; is an &lt;a href=&quot;/index.php?title=Block_cipher&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Block cipher (page does not exist)&quot;&gt;Add-Rotate-Xor&lt;/a&gt; (ARX) based family of &lt;a href=&quot;/index.php?title=Pseudorandom_function&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Pseudorandom function (page does not exist)&quot;&gt;pseudorandom functions&lt;/a&gt; created by &lt;a href=&quot;/index.php?title=Jean-Philippe_Aumasson&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Jean-Philippe Aumasson (page does not exist)&quot;&gt;Jean-Philippe Aumasson&lt;/a&gt; and Daniel J. B...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''SipHash''' is an [[block cipher#ARX_add-rotate-xor|Add-Rotate-Xor]] (ARX) based family of [[pseudorandom function]]s created by [[Jean-Philippe Aumasson]] and [[Daniel J. Bernstein]] in 2012, in response to a spate of &amp;quot;hash flooding&amp;quot; [[denial-of-service attack]]s in late 2011.&lt;br /&gt;
&lt;br /&gt;
Although designed for use as a [[hash function]] in the computer science sense, SipHash is fundamentally different from [[cryptographic hash functions]] like [[Secure Hash Algorithm|SHA]] in that it is only suitable as a [[message authentication code]]: a ''keyed'' hash function like [[HMAC]]. That is, SHA is designed so that it is difficult for an attacker to find two messages ''X'' and ''Y'' such that SHA(''X'') = SHA(''Y''), even though anyone may compute SHA(''X''). SipHash instead guarantees that, having seen ''X&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;'' and SipHash(''X&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;'', ''k''), an attacker who does not know the key ''k'' cannot find (any information about) ''k'' or SipHash(''Y'', ''k'') for any message ''Y'' ∉ {''X&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;''} which they have not seen before.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
SipHash computes 64-bit [[message authentication code]] from a variable-length message and 128-bit secret key. It was designed to be efficient even for short inputs, with performance comparable to non-cryptographic hash functions, such as [[CityHash]], or to authenticate [[network packet]]s.&lt;br /&gt;
&lt;br /&gt;
An unkeyed hash function such as SHA is only collision-resistant if the entire output is used. If used to generate a ''small'' output, such as an index into a hash table of practical size, then no algorithm can prevent collisions; an attacker need only make as many attempts as there are possible outputs.&lt;br /&gt;
&lt;br /&gt;
For example, suppose a network server is designed to be able to handle up to a million requests at once. It keeps track of incoming requests in a hash table with two million entries, using a hash function to map identifying information from each request to one of the two million possible table entries. An attacker who knows the hash function need only feed it arbitrary inputs; one out of two million will have a specific hash value. If the attacker now sends a few hundred requests all chosen to have the ''same'' hash value to the server, that will produce a large number of hash collisions, slowing (or possibly stopping) the server with an effect similar to a [[Denial-of-service attack#Application-layer floods|packet flood]] of many million requests.&lt;br /&gt;
&lt;br /&gt;
By using a key unknown to the attacker, a keyed hash function like SipHash prevents this sort of attack. While it is possible to add a key to an unkeyed hash function ([[HMAC]] is a popular technique), SipHash is much more efficient.&lt;br /&gt;
&lt;br /&gt;
Functions in SipHash family are specified as SipHash-''c''-''d'', where ''c'' is the number of rounds per message block and ''d'' is the number of finalization rounds. The recommended parameters are SipHash-2-4 for best performance, and SipHash-4-8 for conservative security.&lt;br /&gt;
&lt;br /&gt;
The [[reference implementation]] was released as [[public domain software]] under the [[CC0]].&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
SipHash is used in '''[[hash table]] implementations''' of various software:&lt;br /&gt;
* [[Perl]] (available as compile-time option)&lt;br /&gt;
* [[Python (programming language)|Python]] (starting in version 3.4)&lt;br /&gt;
* [[Ruby (programming language)|Ruby]]&lt;br /&gt;
* [[Rust (programming language)|Rust]] &lt;br /&gt;
* [[systemd]] &lt;br /&gt;
* [[OpenDNS]]&lt;br /&gt;
* [[Haskell (programming language)|Haskell]]&lt;br /&gt;
* [[OpenBSD]]&lt;br /&gt;
&lt;br /&gt;
'''Native Implementations'''&lt;br /&gt;
* [https://github.com/bloomberg/bde/blob/master/groups/bsl/bslh/bslh_siphashalgorithm.h C++]&lt;br /&gt;
* [https://github.com/jedisct1/rust-siphash Rust]&lt;br /&gt;
* [[Crypto++]]&lt;br /&gt;
* [https://github.com/paya-cz/siphash C#]&lt;br /&gt;
* [https://gist.github.com/ar-nelson/12bd5ea968c145045200 Haskell]&lt;br /&gt;
* [https://github.com/jedisct1/siphash-js JavaScript]&lt;br /&gt;
* [https://github.com/pemb/siphash VHDL]&lt;br /&gt;
* [https://godoc.org/github.com/dchest/siphash Go]&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Cryptographic hash function]]&lt;br /&gt;
* [[Hash function]]&lt;br /&gt;
* [[Message authentication code]]&lt;br /&gt;
* [[List of hash functions]]&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:Software]]&lt;br /&gt;
[[Category:Cryptography]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
</feed>