bcrypter

Crates.iobcrypter
lib.rsbcrypter
version0.1.1
sourcesrc
created_at2018-10-20 03:01:29.122534
updated_at2018-10-20 03:20:50.242795
descriptionThe bcrypt password hashing function in pure Rust. Supports no_std
homepage
repositoryhttps://github.com/MitchellBerry/BCrypter
max_upload_size
id91611
size31,758
Mitchell Berry (mberry)

documentation

https://docs.rs/crate/bcrypter/0.1.1

README

BCrypter

Crates.io Build Status Crates.io

A pure rust implementation of the bcrypt hashing function based on the Blowfish cipher. Currently only running on nightly builds. Full API documentation can be found here

Installation

In your Cargo.toml file:

[dependencies]
bcrypter = "0.1.1"

Usage

Basic hash

extern crate bcrypter;
use bcrypter::password;

let pw = "hunter2".to_string();
let result = password(pw).hash().unwrap();
let bcrypt_hash_string = result.hash_string;

Custom cost

let result = password(pw)
                .cost(6)
                .hash()
                .unwrap();

Custom salt

let salt = [0u8; 16];
let result = password(pw)
                .salt(salt)
                .cost(8)
                .hash()
                .unwrap();

Verify password

let known_hash = "$2a$04$7eAf8viXin8zazyvaU2HLuZGEbvaHy/lsnlG.HFWkBST5irHhXKJO".to_string();
let correct_password : bool = password(pw)
                                .verify(known_hash)
                                .unwrap()

Raw digest

let result = password(pw).hash().unwrap();
let digest_bytes : [u8: 24] = result.digest;

Notes

  • The default cost is 12

  • A random 16 byte array is used when no salt parameter is provided.

  • The maximum password input is 72 bytes, anything over that will be truncated rather than raise an error. If you need larger inputs consider hashing it beforehand.

Commit count: 131

cargo fmt