#password #pattern #strength #pattern-matching #estimation #security #repeat

zxcvbn

基于熵的密码强度估算器,最初由Dropbox的zxcvbn库开发

29个版本 (14个稳定版)

3.1.0 2024年7月25日
2.2.2 2023年3月19日
2.2.1 2022年4月2日
2.2.0 2022年3月15日
0.2.0 2016年12月21日

#15 in 身份验证

Download history 31205/week @ 2024-04-30 27105/week @ 2024-05-07 32591/week @ 2024-05-14 33320/week @ 2024-05-21 36546/week @ 2024-05-28 32078/week @ 2024-06-04 29494/week @ 2024-06-11 28654/week @ 2024-06-18 32654/week @ 2024-06-25 27893/week @ 2024-07-02 28542/week @ 2024-07-09 31226/week @ 2024-07-16 36936/week @ 2024-07-23 28196/week @ 2024-07-30 30721/week @ 2024-08-06 19710/week @ 2024-08-13

121,134 每月下载量
用于 42 个Crates(28个直接使用)

MIT 许可证

1MB
5K SLoC

zxcvbn

Version License

概述

zxcvbn 是一个基于Dropbox的zxcvbn库的密码强度估算器。通过模式匹配和保守估算,它识别和权衡了30k个常见密码、常见名字和姓氏(根据美国人口普查数据)、来自维基百科的流行英语单词、美国电视和电影中的流行单词,以及其他常见模式,如日期、重复(aaa)、序列(abcd)、键盘模式(qwertyuiop)和l33t speak。

考虑将zxcvbn用作密码组成策略的算法替代方案——当网站要求以最小复杂性分数代替令人讨厌的规则(如“密码必须包含三个小写字母、大写字母、数字和符号”时,它更安全、更灵活、更易用。

  • 更安全:策略通常失败两次,既允许弱密码(P@ssword1),又不允许强密码。
  • 更灵活:zxcvbn允许许多密码风格蓬勃发展,只要它检测到足够的复杂性——给足够的生僻单词,口令短语会被高度评价;键盘模式根据长度和转折次数进行排名,而大写字母在不规则时增加了更多的复杂性。
  • 更易用:zxcvbn旨在为简单的、无规则的界面提供动力,这些界面提供即时反馈。除了强度估算外,zxcvbn还包括最小、有针对性的口头反馈,这可以帮助用户选择更难以猜测的密码。

安装

zxcvbn 可以添加到项目的 Cargo.toml 文件中的 [dependencies] 部分,如下所示

[dependencies]
zxcvbn = "2"

zxcvbn 有一个“ser”功能标志,您可以在需要通过 serde 提供序列化支持时启用。默认情况下是禁用的,以减少冗余。

zxcvbn 遵循语义版本规范。

zxcvbn 针对最新的稳定 Rust 编译器。它可能在更早版本的编译器上编译,但只能保证在最新稳定版本上运行。在没有编译器错误的情况下,它还应该在最新测试版和夜间版本上运行。

使用方法

完整的 API 文档可以在这里找到。

zxcvbn 暴露了一个名为 zxcvbn 的函数,可以调用它来计算密码的评分(0-4)以及其他相关信息。zxcvbn 还可以接受用户输入数组(例如用户名、电子邮件地址、城市、州)来对包含此类信息的密码提供警告。

使用示例

extern crate zxcvbn;

use zxcvbn::zxcvbn;

fn main() {
    let estimate = zxcvbn("correcthorsebatterystaple", &[]);
    println!("{}", estimate.score()); // 3
}

返回的 Entropy 结构体上可用的其他字段可以在完整文档中查看。

贡献

欢迎任何贡献,并将通过 GitHub 上的拉取请求接受。可以通过 GitHub 问题报告错误。请提供尽可能多的详细信息。如果您有能力在错误报告中提交修复方案,则建议您通过拉取请求提交,但您不必是 Rust 开发者即可贡献。其他贡献(如改进文档或翻译)也可以通过 GitHub 接受。

许可证

zxcvbn 是开源软件,在 MIT 许可证下分发。

依赖项

~3.5–7.5MB
~130K SLoC