hwsl2: Hashing with SL2

[ data, library, mit ] [ Propose Tags ] [ Report a vulnerability ]

An algebraic hash function, inspired by the paper Hashing with SL2 by Tillich and Zemor.

The hash function is based on matrix multiplication in the special linear group of degree 2, over a Galois field of order 2^127, with all computations modulo the polynomial x^127 + x^63 + 1.

This construction gives some nice properties, which traditional bit-scambling hash functions don't possess, including it being composable. It holds:

hash (m1 <> m2) == hash m1 <> hash m2

Following that, the hash function is also parallelisable. If a message can be divided into a list of chunks, the hash of the message can be calculated in parallel:

mconcat (parMap rpar hash chunks)

All operations in this package are implemented in a very efficient manner using SSE instructions.


[Skip to Readme]

Flags

Automatic Flags
NameDescriptionDefault
avx2

Enable AVX 2 optimisations.

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.1.1.0, 0.1.1.1, 0.1.1.2, 0.1.1.3, 0.1.1.4, 0.2.0.0, 0.3.0.1, 0.3.1.0, 0.3.1.1, 0.3.2.0, 0.4.0.0, 0.4.0.1
Dependencies base (>=4.8 && <5), bytestring (>=0.10) [details]
License MIT
Author Sam Rijs
Maintainer srijs@airpost.net
Category Data
Home page https://github.com/srijs/hwsl2
Source repo head: git clone git://github.com/srijs/hwsl2-haskell.git
Uploaded by srijs at 2017-11-03T11:19:33Z
Distributions
Reverse Dependencies 3 direct, 0 indirect [details]
Downloads 9040 total (2 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2017-11-03 [all 1 reports]

Readme for hwsl2-0.4.0.1

[back to package description]

Hashing with SL2 Build Status

An algebraic hash function, inspired by the paper Hashing with SL2 by Tillich and Zemor.

The hash function is based on matrix multiplication in the special linear group of degree 2, over a Galois field of order 2^127, with all computations modulo the polynomial x^127 + x^63 + 1.

This construction gives some nice properties, which traditional bit-scambling hash functions don't possess, including it being composable. It holds:

hash (m1 <> m2) == hash m1 <> hash m2

Following that, the hash function is also parallelisable. If a message m can be divided into a list of chunks cs, the hash of the message can be calculated in parallel:

mconcat (parMap rpar hash cs) == hash m

All operations in this package are implemented in a very efficient manner using SSE instructions.

diagram