Haskell implementation of the RNCryptor encrypted file format by Rob Napier
Latest commit 01aca39 Dec 29, 2016 @adinapoli adinapoli committed on GitHub Merge pull request #25 from RNCryptor/issue-5
Fixed #5 (50% speedup by using faster PBKDF2)


Build Status Build status Coverage Status

Haskell Implementation of the RNCryptor spec

This library implements the specification for the RNCryptor encrypted file format by Rob Napier.

Current Supported Versions


The library uses by default a fast C layer to compute the PBKDF2, but that requires the presence of the OpenSSL libraries on the target system. In case this is a too rigid requirement, you can switch back to a pure (slower) Haskell implementation by turning off the fastpbkdf2 cabal flag.


  • Key-based test vectors
  • Key-derivation test vectors

Contributors (Sorted by name)

  • Alfredo Di Napoli (creator and maintainer)
  • Rob Napier (gave me the key insight to use the previous cipher text as IV for the new block)
  • Tim Docker (Added decryptEither and gave us momentum in turning decrypt into a total function)
  • Tom Titchener (added support for HMAC validation)


This library scratches my own itches, but please fork away! Pull requests are encouraged.