| Copyright | (c) Joseph Abrahamson 2013 |
|---|---|
| License | MIT |
| Maintainer | me@jspha.com |
| Stability | experimental |
| Portability | non-portable |
| Safe Haskell | None |
| Language | Haskell2010 |
Crypto.Saltine.Core.Hash
Description
The hash function hashes a message ByteString and returns a
hash. Hashes are always of length hash. The shorthash
function hashes a message ByteString with respect to a secret key
and returns a very short hash. Short hashes are always of length
shorthash.
The hash function is designed to be usable as a strong component
of DSA, RSA-PSS, key derivation, hash-based message-authentication
codes, hash-based ciphers, and various other common
applications. Strong means that the security of these
applications, when instantiated with hash, is the same as the
security of the applications against generic attacks. In
particular, the hash function is designed to make finding
collisions difficult.
hash is currently an implementation of SHA-512. shorthash is
currently an implementation of SipHash-2-4
(https://131002.net/siphash/).
There has been considerable degradation of public confidence in the security conjectures for many hash functions, including SHA-512. However, for the moment, there do not appear to be alternatives that inspire satisfactory levels of confidence. One can hope that NIST's SHA-3 competition will improve the situation.
Sodium includes an implementation of the Blake2b hash function
(https://blake2.net/) and is bound here as the generichash
function.
This is version 2010.08.30 of the hash.html web page. Information about SipHash has been added.
Synopsis
- data ShorthashKey
- hash :: ByteString -> ByteString
- shorthash :: ShorthashKey -> ByteString -> ByteString
- newShorthashKey :: IO ShorthashKey
- data GenerichashKey
- newGenerichashKey :: Int -> IO (Maybe GenerichashKey)
- data GenerichashOutLen
- generichashOutLen :: Int -> Maybe GenerichashOutLen
- generichash :: GenerichashKey -> ByteString -> GenerichashOutLen -> ByteString
Documentation
data ShorthashKey Source #
An opaque shorthash cryptographic secret key.
Instances
Arguments
| :: ByteString | Message |
| -> ByteString | Hash |
Computes a cryptographically collision-resistant hash making
hash m == hash m' ==> m == m' highly likely even when under
attack.
Arguments
| :: ShorthashKey | |
| -> ByteString | Message |
| -> ByteString | Hash |
Computes a very short, fast keyed hash.
newShorthashKey :: IO ShorthashKey Source #
Randomly generates a new key for shorthash.
data GenerichashKey Source #
An opaque generichash cryptographic secret key.
Instances
newGenerichashKey :: Int -> IO (Maybe GenerichashKey) Source #
Randomly generates a new key for generichash of the given length.
data GenerichashOutLen Source #
Instances
generichashOutLen :: Int -> Maybe GenerichashOutLen Source #
Create a validated Generichash output length
Arguments
| :: GenerichashKey | |
| -> ByteString | Message |
| -> GenerichashOutLen | Desired output hash length |
| -> ByteString | Hash |
Computes a generic, keyed hash.