4个版本
0.1.3 | 2021年6月18日 |
---|---|
0.1.2 | 2020年10月22日 |
0.1.1 | 2020年7月3日 |
0.1.0 | 2020年7月3日 |
#2096 in 密码学
每月 26 次下载
11KB
168 代码行
PhPass
WordPress使用的密码散列算法的Rust实现。https://www.openwall.com/phpass/
什么是
WordPress,有史以来最受欢迎的博客平台,是PhPass密码算法的主要应用。由于WP在支持上的广泛性和向后兼容性,他们避免了使用更现代的校验和(例如SHA256),而是选择了过时的、早已破损的md5。为了弥补这一点,他们将在加盐(以及重新加盐)的输入上运行MD5 256次。
为什么
当我们制作某些想法和项目时,我们往往不知道哪些会成功,并且网站经常自然地从简单的、管理的WordPress博客发展到带有自定义插件,再到以WordPress作为其包之一的托管PHP应用程序,最后完全远离PHP。那些迁移到Rust(这是美好的)的人将希望有一种方式来保持那些旧登录工作。
它也比原生的PHP版本快得多,因此可以用来快速审计WordPress用户数据库,标记并禁用具有不安全(容易猜测)密码的账户。
如何
此crate提供了解码PhPass校验和和盐的PhPass基本功能,并验证与纯文本密码。
待办事项:适当的rustdoc和示例目录
入门
// mysql_async querying our user's hash
let hash: String = pool
.get_conn()
.await?
.first_exec(
"SELECT user_pass FROM wp_users WHERE user_email = ?;",
(&auth_data.email,)
)
.await?
.1
.ok_or(MyError)?;
// Return on failed verify through the beauty of ?
PhPass::try_from(hash)?.verify(&auth_data.password)?;
使用随机哈希创建新密码
let phpass = PhPass::new("swordfish");
// Display or to_string() will generate the full hash string
println!("{}", phpass);
依赖项
~790KB
~15K SLoC