pureMD5-2.1.4: A Haskell-only implementation of the MD5 digest (hash) algorithm.
Safe HaskellNone



It is suggested you use the 'crypto-api' class-based interface to access the MD5 algorithm. Either rely on type inference or provide an explicit type:

  hashFileStrict = liftM hash' . B.readFile
  hashFileLazyBS = liftM hash . B.readFile


data MD5Digest Source #

After finalizing a context, using md5Finalize, a new type is returned to prevent 're-finalizing' the structure.

Static data

md5InitialContext :: MD5Context Source #

The initial context to use when calling md5Update for the first time


md5 :: ByteString -> MD5Digest Source #

Processes a lazy ByteString and returns the md5 digest. This is probably what you want. You can use show to produce the standard hex representation.

md5Update :: MD5Context -> ByteString -> MD5Context Source #

Alters the MD5Context with a partial digest of the data.

The input bytestring MUST be a multiple of the blockSize or bad things can happen (incorrect digest results)!

md5Finalize :: MD5Context -> ByteString -> MD5Digest Source #

Closes an MD5 context, thus producing the digest.

md5DigestBytes :: MD5Digest -> ByteString Source #

The raw bytes of an MD5Digest. It is always 16 bytes long.

You can also use the Binary or Serialize instances to output the raw bytes. Alternatively you can use show to produce the standard hex representation.

Crypto-API interface

class (Serialize d, Eq d, Ord d) => Hash ctx d | d -> ctx, ctx -> d where #

The Hash class is intended as the generic interface targeted by maintainers of Haskell digest implementations. Using this generic interface, higher level functions such as hash and hash' provide a useful API for comsumers of hash implementations.

Any instantiated implementation must handle unaligned data.

Minimum complete definition: outputLength, blockLength, initialCtx, updateCtx, and finalize.

Minimal complete definition

outputLength, blockLength, initialCtx, updateCtx, finalize


outputLength #


:: Tagged d BitLength

The size of the digest when encoded

blockLength #


:: Tagged d BitLength

The amount of data operated on in each round of the digest computation

initialCtx #


:: ctx

An initial context, provided with the first call to updateCtx

updateCtx #


:: ctx 
-> ByteString 
-> ctx

Used to update a context, repeatedly called until all data is exhausted must operate correctly for imputs of n*blockLength bytes for n elem [0..]

finalize #


:: ctx 
-> ByteString 
-> d

Finializing a context, plus any message data less than the block size, into a digest

hash :: ByteString -> d #

Hash a lazy ByteString, creating a digest

hash' :: ByteString -> d #

Hash a strict ByteString, creating a digest