This is a maintenance fork of a C implementation of the SipHash algorithm
 
 
Go to file
Kyle Altendorf 8d38d5e6fd Return non-zero when tests fail
This allows for shell scripts to check for success or failure without parsing
the printed output.  If the function name is later changed from main() it
will also allow other code calling the tests to also easily check the pass
or fail status.
2019-09-21 10:06:07 -04:00
.gitignore Initial commit 2014-03-23 02:51:00 -07:00
LICENSE Initial commit 2014-03-23 02:51:00 -07:00
README.md Make *c* and *d* rounds less intrusively configurable 2019-09-10 08:43:23 -04:00
halfsiphash.c Merge pull request #17 from altendky/format_specifiers 2019-09-14 12:43:31 +02:00
makefile Make *c* and *d* rounds less intrusively configurable 2019-09-10 08:43:23 -04:00
siphash.c Correct \ alignment 2019-09-18 12:00:52 -04:00
test.c Return non-zero when tests fail 2019-09-21 10:06:07 -04:00
vectors.h Update test vectors for HalfSipHash 2017-01-05 17:50:37 +01:00

README.md

SipHash

Reference implementation of SipHash, a family of pseudorandom functions optimized for speed on short messages.

SipHash was designed as a mitigation to hash-flooding DoS attacks. It is now used in the hash tables implementation of Python, Ruby, Perl 5, etc.

SipHash was designed by Jean-Philippe Aumasson and Daniel J. Bernstein.

Usage

Running

  make

will build tests for

  • SipHash-2-4, the default version of SipHash returning 64-bit tags
  • SipHash-2-4 with doubled tag size, i.e. 128-bit tags
  • HalfSipHash-2-4, a version of SipHash working with 32-bit words and returning 32-bit tags by default
  • HalfSipHash-2-4 with doubled tag size, i.e. 64-bit tags
  ./test

verifies 64 test vectors, and

  ./debug

does the same and prints intermediate values.

The code can be adapted to implement SipHash-c-d, the version of SipHash with c compression rounds and d finalization rounds, by defining cROUNDS or dROUNDS when compiling. This can be done with -D command line arguments to many compilers such as below.

gcc -Wall --std=c99 -DcROUNDS=2 -DdROUNDS=4 siphash.c halfsiphash.c test.c -o test

The makefile also takes c and d rounds values as parameters.

make cROUNDS=2 dROUNDS=4

Obviously, if the number of rounds is modified then the test vectors won't verify.

Intellectual property

The SipHash reference code is released under CC0 license, a public domain-like licence.

We aren't aware of any patents or patent applications relevant to SipHash, and we aren't planning to apply for any.

References

The SipHash page includes

  • a list of third-party implementations and modules
  • a list of projects using SipHash
  • references to cryptanalysis results