RustCrypto 发布 password-hash
crate
此 crate 提供针对密码的 traits 和类型,使用这个 crate 的 crates 有:
argon2
pbkdf2
scrypt
所以比如 PasswordHash::verify_password 这个函数可以使用多种密码算法的 hash,但是可以一次性验证,代码如下:
use password_hash::PasswordHash;
use argon2::Argon2;
use pbkdf2::Pbkdf2;
use scrypt::Scrypt;
let hash_string = load_hash_string_for_user(...); // e.g. `$argon2id$...`
let input_password = read_password_from_user();
let password_hash = PasswordHash::new(&hash_string)
.expect("invalid password hash");
// Trait objects for algorithms to support
let algs = &[Argon2::default(), Pbkdf2, Scrypt];
if password_hash.verify_password(algs, input_password).is_ok() {
access_granted();
} else {
access_denied();
}
https://github.com/Rust