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 身份验证
121,134 每月下载量
用于 42 个Crates(28个直接使用)
1MB
5K SLoC
zxcvbn
概述
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