smarkets/erlang-bcrypt

Erlang wrapper for OpenBSD's Blowfish password hashing code

C

86

56 commits

updated May 14, 2018

See the code

README

erlang-bcrypt
=============

.. image:: https://travis-ci.org/smarkets/erlang-bcrypt.svg?branch=master
    :target: https://travis-ci.org/smarkets/erlang-bcrypt

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.

.. _"A Future-Adaptable Password Scheme":
   http://www.openbsd.org/papers/bcrypt-paper.ps

Basic build instructions
------------------------

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

        make

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

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

Basic usage instructions
------------------------

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

        1> {ok, Salt} = bcrypt:gen_salt().
        {ok,"$2a$12$sSS8Eg.ovVzaHzi1nUHYK."}
        2> {ok, Hash} = bcrypt:hashpw("foo", Salt).
        {ok,"$2a$12$sSS8Eg.ovVzaHzi1nUHYK.HbUIOdlQI0iS22Q5rd5z.JVVYH6sfm6"}

3. Verify the password::

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

Configuration
-------------

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

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

``mechanism``
  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`

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

Authors
-------

* `Hunter Morris`_
* `Mrinal Wadhwa`_

.. _Hunter Morris:
   http://github.com/skarab

.. _Mrinal Wadhwa:
   http://github.com/mrinalwadhwa

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

Contributors

hntrmrrs

39 commits

mrinalwadhwa

6 commits

joedevivo

3 commits

russor

2 commits

smarkets/erlang-bcrypt

Erlang wrapper for OpenBSD's Blowfish password hashing code

C

86

56 commits

updated May 14, 2018

See the code

README

erlang-bcrypt
=============

.. image:: https://travis-ci.org/smarkets/erlang-bcrypt.svg?branch=master
    :target: https://travis-ci.org/smarkets/erlang-bcrypt

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.

.. _"A Future-Adaptable Password Scheme":
   http://www.openbsd.org/papers/bcrypt-paper.ps

Basic build instructions
------------------------

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

        make

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

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

Basic usage instructions
------------------------

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

        1> {ok, Salt} = bcrypt:gen_salt().
        {ok,"$2a$12$sSS8Eg.ovVzaHzi1nUHYK."}
        2> {ok, Hash} = bcrypt:hashpw("foo", Salt).
        {ok,"$2a$12$sSS8Eg.ovVzaHzi1nUHYK.HbUIOdlQI0iS22Q5rd5z.JVVYH6sfm6"}

3. Verify the password::

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

Configuration
-------------

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

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

``mechanism``
  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`

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

Authors
-------

* `Hunter Morris`_
* `Mrinal Wadhwa`_

.. _Hunter Morris:
   http://github.com/skarab

.. _Mrinal Wadhwa:
   http://github.com/mrinalwadhwa

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

Contributors

hntrmrrs

39 commits

mrinalwadhwa

6 commits

joedevivo

3 commits

russor

2 commits

Languages

C

72.1%

Erlang

27.5%