Erlang wrapper for OpenBSD's Blowfish password hashing code
C Erlang Makefile
#19 Compare This branch is 55 commits ahead of abhay:master.
Latest commit a63df34 Aug 8, 2016 Roberto Bruggemann Include sys/types.h in c_src/erl_blf.h
This is needed to compile on Alpine Linux.

Thanks anthonyrisinger.



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

  1. 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).
  1. 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.