[][src]Crate scrypt

This crate implements the Scrypt key derivation function as specified in [1].

If you are not using convinience functions scrypt_check and scrypt_simple it's recommended to disable scrypt default features in your Cargo.toml:

[dependencies]
scrypt = { version = "0.2", default-features = false }

Usage

extern crate scrypt;

use scrypt::{ScryptParams, scrypt_simple, scrypt_check};

// First setup the ScryptParams arguments with:
// r = 8, p = 1, n = 32768 (log2(n) = 15)
let params = ScryptParams::new(15, 8, 1).unwrap();
// Hash the password for storage
let hashed_password = scrypt_simple("Not so secure password", &params)
    .expect("OS RNG should not fail");
// Verifying a stored password
assert!(scrypt_check("Not so secure password", &hashed_password).is_ok());

References

[1] - C. Percival. Stronger Key Derivation Via Sequential Memory-Hard Functions

Modules

errors

Errors for scrypt operations.

Structs

ScryptParams

The Scrypt parameter values.

Functions

scrypt

The scrypt key derivation function.

scrypt_check

scrypt_check compares a password against the result of a previous call to scrypt_simple and returns Ok(()) if the passed in password hashes to the same value, Err(CheckError::HashMismatch) if hashes have different values, and Err(CheckError::InvalidFormat) if hashed_value has an invalid format.

scrypt_simple

scrypt_simple is a helper function that should be sufficient for the majority of cases where an application needs to use Scrypt to hash a password for storage. The result is a String that contains the parameters used as part of its encoding. The scrypt_check function may be used on a password to check if it is equal to a hashed value.