commit | c2156fff699908e6087bdcd1255c26ffffeacfae | [log] [tgz] |
---|---|---|
author | Jasper Siepkes <jasper@siepkes.nl> | Thu Sep 28 14:53:31 2017 +0200 |
committer | David de Boer <david@ddeboer.nl> | Thu Sep 28 14:53:31 2017 +0200 |
tree | 92c93ffa9b366fa5f3ac9ee7e52f4b7fcc1458d5 | |
parent | 7ddab115e18334dafbebeba5f21c4c80fddfdf59 [diff] |
Fix linking on SmartOS/Illumos/Solaris. (#3) In addition to the changes discussed in #2 manually specifying libstackprotector (-lssp) as ld flag is needed to build bcrypt on SmartOS.
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.
Build it (project uses rebar, but I’ve included a Makefile):
make
Run it (simple way, starting sasl, crypto and bcrypt):
erl -pa ebin -boot start_sasl -s crypto -s bcrypt
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"}
Verify the password:
3> {ok, Hash} =:= bcrypt:hashpw("foo", Hash). true 4> {ok, Hash} =:= bcrypt:hashpw("bar", Hash). false
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
.
Hunter Morris & Mrinal Wadhwa.