[![Build Status](](
[![Hex pm](](

erlang-bcrypt is a wrapper around the OpenBSD Blowfish password hashing
algorithm, as described in 
[A Future-Adaptable Password Scheme]( 
by Niels Provos and David Mazieres.

Basic build instructions

1. Build it (project uses rebar, but I’ve included a Makefile):


2. Run it (simple way, starting sasl, crypto and bcrypt):

    erl -pa ebin -boot start_sasl -s crypto -s bcrypt

Basic usage instructions

Hash a password using a salt with the default number of rounds:

1> {ok, Salt} = bcrypt:gen_salt().
2> {ok, Hash} = bcrypt:hashpw("foo", Salt).

Verify the password:

3> {ok, Hash} =:= bcrypt:hashpw("foo", Hash).
4> {ok, Hash} =:= bcrypt:hashpw("bar", Hash).


The bcrypt application is configured by changing values in the
application's environment:

  Sets the default number of rounds which define the complexity of the
  hash function. Defaults to ``12``.

  Specifies whether to use the NIF implementation (`'nif'`) or a
  pool of port programs (`'port'`). Defaults to `'nif'`.

  `Note: the NIF implementation no longer blocks the Erlang VM
  scheduler threads`

  Specifies the size of the port program pool. Defaults to ``4``.

Original authors

Hunter Morris & [Mrinal Wadhwa](