#password #salt #hash #wordpress

phpass

PHPass,WordPress密码散列器,用Rust重新实现

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 次下载

MIT 许可证

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