elocrypt: Generate easy-to-remember, hard-to-guess passwords

[ cryptography, library, program ] [ Propose Tags ]

Generates pronounceable, hard-to-guess passwords--as hard as Vince Carter's knee cartilage is.

[Skip to Readme]
Versions [RSS] [faq] 0.3.0, 0.3.1, 0.3.2, 0.4.0, 0.4.1, 0.6.0, 1.0.0, 2.0.0, 2.0.1, 2.1.0
Dependencies base (>=4.7 && <5), containers, elocrypt, MonadRandom, random [details]
License LicenseRef-OtherLicense
Copyright Copyright: (c) 2017 Sean Gillespie
Author Sean Gillespie
Maintainer sean@mistersg.net
Revised Revision 1 made by sgillespie at 2019-12-16T02:00:04Z
Category Cryptography
Home page https://www.github.com/sgillespie/elocrypt
Source repo head: git clone https://github.com/sgillespie/elocrypt.git
this: git clone https://github.com/sgillespie/elocrypt.git(tag v2.1.0)
Uploaded by sgillespie at 2019-12-16T01:42:29Z
Distributions NixOS:2.1.0
Executables elocrypt
Downloads 6110 total (44 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2019-12-16 [all 1 reports]


[Index] [Quick Jump]


Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees


Readme for elocrypt-2.1.0

[back to package description]


Build Status

Elocrypt generates pronounceable, easy-to-remember, hard-to-guess passwords... as hard as Vince Carter's knee cartilage is. Elocrypt includes a Haskell library and program.


In order to build or install you will need

  • GHC (tested on 8.6.5)
  • Stack (tested on


Elocrypt is on Hackage. Installation is as easy as:

cabal install elocrypt

Binaries are also available:


Generate a list passwords:

elocrypt [length]

You can also generate random phrases (1 per line):

elocrypt --passphrases [min-length] [max-length]

Obtaining the source

Elocrypt sources can be found

  • https://github.com/sgillespie/elocrypt
  • https://hackage.haskell.org/package/elocrypt


In order to build or install you will need

Build elocrypt:

stack setup
stack build

Then, install (if desired):

stack install

API Documentation

The full API documentation is on hackage @ https://hackage.haskell.org/package/elocrypt/docs. To build the documentation yourself, run

stack haddock

API Examples

You can use elocrypt to generate words in any Haskell code, so long as you have installed elocrypt. Generate a word by using Data.Elocrypt.newPassword

import Data.Elocrypt
-- Generate a word of length 10
fooGen :: IO String
fooGen = newPassword 10 `liftM` getStdGen

Alternatively, you can use Data.Elocrypt.mkPassword if you want to complete control of the random monad

import Data.Elocrypt
import Control.Monad.Random
-- Generate a word of length 10
fooGen' :: IO String
fooGen' = evalRand (mkPassword 10) `liftM` getStdGen


Sean Gillespie sean@mistersg.net


Thanks to Tom Van Vleck for creating a 3rd order english approximation password generator. Elocrypt is based on his javascript generator @ http://www.multicians.org/thvv/gpw-js.html


You can use this source for any reason, provided that you:

  • Let Tom Van Vleck know you are using it: http://www.multicians.org/cgi-sys/cgiwrap/thvv/squirnet.cgi
  • Share your source freely
  • Give Tom Van Vleck, and all the other pioneers, if you use the data or algorithms. (A link to http://www.multicians.org/thvv/gpw-js.html is sufficient
  • Use a compatible license

Please see LICENSE for all details