7个版本
0.3.0 | 2024年7月15日 |
---|---|
0.2.2 | 2024年7月4日 |
0.1.2 | 2024年6月6日 |
0.1.1 | 2024年5月31日 |
#935 in 加密学
在 pants-store 中使用
26KB
622 行
pants-gen
密码生成器,用于 pants。
用法
可作为库或命令行使用的密码生成器
在命令行使用时,可以提供规范字符串,或者用其他参数覆盖默认值(或当前规范字符串)。
CLI示例
使用默认规范
$ pants-gen
PHk};IUX{59!H88252x4wjD(Fg|5cva|
覆盖默认规范为
- 3个或更多大写字母
- 1到2个小写字母
- 3个或更少的数字
- 1个符号
- 16位长度的密码
$ pants-gen --spec '16//3+|:upper://1-2|:lower://3-|:number://1|:symbol:'
8Z6TWWCARwJxC)8C
覆盖默认规范的部分
- 设置长度为12
$ pants-gen -l 12
bS),2VMV2G+T
设置自定义字符组
- 禁用符号
- 设置一个等效的符号集为 !@#$%^&*|_+-=
$ pants-gen -s 0 -c '!@#$%^&*|_+-=|1+'
=LsI8=%@%GP5hMlIm%#dj9&66V9-#7h@
库示例
要生成密码,构建规范并调用 generate
产生密码。此函数返回一个 Option
,因为提供的选项的约束不一定总能满足给定的长度要求。
use pants_gen::password::{PasswordSpec, CharStyle};
use pants_gen::interval::Interval;
let spec = PasswordSpec::new()
.length(16)
.upper_at_least(1)
.lower(Interval::new(1,10).unwrap())
.include(CharStyle::Number.exactly(3))
.custom(vec!['&', '^'], Interval::exactly(1));
if let Some(p) = spec.generate() {
println!("{}", p);
} else {
println!("Couldn't meet constraints of spec");
}
依赖项
~0.5–1MB
~22K SLoC