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 中使用

MIT 许可证

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