keccak alternatives and similar packages
Based on the "crypto" category.
Alternatively, view keccak alternatives based on common mentions on social networks and blogs.
-
crypto-api
Haskell generic interface (type classes) for cryptographic algorithms -
crypto-pubkey-types
Crypto Public Key algorithm generic types. -
crypto-pubkey
DEPRECATED - use cryptonite - Cryptographic public key related algorithms in haskell (RSA,DSA,DH,ElGamal) -
crypto-enigma
A Haskell Enigma machine simulator with rich display and machine state details. -
crypto-numbers
DEPRECATED - use cryptonite - Cryptographic number related function and algorithms -
crypto-random
DEPRECATED - use cryptonite - Cryptographic random class and entropy gatherer with safe API for haskell -
crypto-classical
A Haskell library for using and attacking Classical Encryption Schemes. -
crypto-random-effect
haskell library providing a random and securemem effect for extensible effects
Access the most powerful time series database as a service
Do you think we are missing an alternative of keccak or a related project?
README
keccak
A pure haskell implementation of the keccak family of hashes.
Documentation available on Hackage.
Example usage
In the example usage below, I encode ByteString
s in base16 so that they
can be read as standard hex strings.
ghci> import Data.ByteString.Base16 as BS16
ghci> :t keccak256
keccak256 :: BS.ByteString -> BS.ByteString
ghci> BS16.encode $ keccak256 "testing"
"5f16f4c7f149ac4f9510d9cf8cf384038ad348b3bcdc01915f95de12df9d1b02"
ghci> BS16.encode $ keccak256 ""
"c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"
Testing
stack test
NIST uses the Secure Hash Algorithm Validation System
(SHAVS)
to validate the correctness of hash implementations. For all four variants of
SHA3 and Keccak and the two standard variants of SHAKE, the keccak
library's
implementations successfully
pass the standard
KATs (Known Answer Tests).
Benchmarks
stack bench
cryptonite
's C-based implementation of Keccack256 is currently 21 times faster
than my Haskell.
benchmarked keccak
time 768.3 μs (758.7 μs .. 775.7 μs)
0.998 R² (0.995 R² .. 0.999 R²)
mean 774.2 μs (767.5 μs .. 784.0 μs)
std dev 29.27 μs (23.12 μs .. 36.87 μs)
variance introduced by outliers: 19% (moderately inflated)
benchmarked cryptonite-keccak
time 36.92 μs (35.95 μs .. 38.03 μs)
0.996 R² (0.995 R² .. 0.998 R²)
mean 36.27 μs (35.99 μs .. 36.66 μs)
std dev 1.147 μs (918.3 ns .. 1.471 μs)
variance introduced by outliers: 14% (moderately inflated)
Eventually, I hope the library will have very few dependencies (only base, vector & bytestring, currently) and excellent performance.