1 个不稳定版本

0.1.0 2023年3月5日

#10 in #pbkdf2

Apache-2.0 OR MIT

1KB

RustCrypto: 密码散列

Project Chat Apache2/MIT licensed Dependency Status

纯Rust编写的密码散列算法集合,也称为基于密码的密钥派生函数。

支持的算法

算法 Crates.io 文档 MSRV
Argon2 argon2 crates.io Documentation MSRV 1.65
气球 balloon‑hash crates.io Documentation MSRV 1.65
bcrypt‑pbkdf bcrypt‑pbkdf crates.io Documentation MSRV 1.60
PBKDF2 pbkdf2 crates.io Documentation MSRV 1.60
scrypt scrypt crates.io Documentation MSRV 1.60
SHA-crypt sha‑crypt crates.io Documentation MSRV 1.60

请参阅OWASP 密码存储技巧表,以帮助您选择适合您用例的适当算法。

用法

以下代码示例展示了如何使用此存储库中实现的一种可能的密码散列算法验证存储的密码。

use password_hash::{PasswordHash, PasswordVerifier};

use argon2::Argon2;
use pbkdf2::Pbkdf2;
use scrypt::Scrypt;

// Can be: `$argon2`, `$pbkdf2`, or `$scrypt`
let hash_string = "$argon2i$v=19$m=65536,t=1,p=1$c29tZXNhbHQAAAAAAAAAAA$+r0d29hqEB0yasKr55ZgICsQGSkl0v0kgwhd+U3wyRo";
let input_password = "password";

let password_hash = PasswordHash::new(&hash_string).expect("invalid password hash");

// Trait objects for algorithms to support
let algs: &[&dyn PasswordVerifier] = &[&Argon2::default(), &Pbkdf2, &Scrypt];

password_hash.verify_password(algs, input_password).expect("invalid password");

最小支持的Rust版本(MSRV)策略

MSRV升级被视为破坏性更改,并且仅在次要版本升级时进行。

许可证

所有在以下任一许可证下授权的包:

由您选择。

贡献

除非您明确声明,否则您提交给作品以供包含的所有贡献,根据Apache-2.0许可证的定义,应作为上述双重授权发布,而不附加任何额外条款或条件。

无运行时依赖