2 个不稳定版本

使用旧的 Rust 2015

0.2.0 2018 年 4 月 9 日
0.1.0 2018 年 4 月 9 日

#818 in 身份验证

MIT 许可证

94KB
7.5K SLoC

passgenr

Build Status crates.io crates.io docs.rs

passgenr 是一个用于生成加密随机密码的 Rust 库。它是我的早期密码生成工具 passgen(用 C 语言编写)的移植版。passgenr 还包含一个用于生成密码的命令行实用程序。请阅读下面的 安全细节 部分。

命令行实用程序

要构建和安装命令行实用程序,运行...

cargo build --bin passgenr --release

...然后安装 ./target/release/passgenr 到您的系统中。

以下是使用命令行工具的一些示例

$ passgenr --ascii
|*H(f]*@XO;YX"vEOx_%3LDf}fyAuQ<_2=&W<|d*ZY#zH%{Wq20mruTo:G~jg-rd

$ passgenr --alpha
PWPMBzF4KIUNGIK79S04NOgt51s5TJaqCTNd4loMkTjIZiHsrGMUrqE4DCrBCuay

$ passgenr --hex
0FB8DA7DF897D3E781D8F93D48A1FDA19C4B1CA96A3D78E1CB1BE46441AD7EE3

$ passgenr --digit
4685009459776989842380332148352094362440679705765781117806140754

$ passgenr --lower
bjqxtuknhlqacsiwjansyavkaqlnyscsnxwowcgymlkwxzlilxbzsyovyoqwjdmw

$ passgenr --words
vocalist.uptown.bunch.feel.board.crock.few.teeter.product.intellect

$ passgen --hex -p 5
753924DC422047A0D9FFDDEE87BCF6BA65D992EE317178D1C77BDE46DAC13C42
1ABFFDA08CD24BBD34590D183EE25C610A6B9CCD9847081A786B0061EF312769
2C065D5BD06412C6BE08C47F728D8AB9A099B5C42102517897426D9CF5420DCA
239EDCE8E3788F8E86383411EBA7A3E819F8897C263327AA20503D563E59733B
C2A980F8DFCC686F389B5CB96D30701C22D0B7B6BF2D732F7CD1364D81D949CC

此库位于 crates.io。文档托管在 docs.rs

要使用此库,将以下内容添加到您的 Cargo.toml...

[dependencies]
passgenr = "0.2"

...并在您的 crate 根目录中添加此行...

extern crate passgenr;

...现在您可以生成密码了...

assert_eq!(
    20,
    passgenr::random_password(passgenr::charsets::ASCII, 20, "").unwrap().len()
);

安全细节

随机性。 passgenr 使用 OsRng 作为随机数生成器,它直接从操作系统的 CSPRNG(例如,Linux 上的 getrandom(2)/dev/urandom,或 Windows 上的 RtlGenRandom)读取。密码的各个元素(字符或单词)通过在 OsRng 上调用 .choose() 来选择,该操作小心地均匀采样(即,它不使用原始的“mod N”算法)。

交换文件。 passgenr 不能阻止其内存写入到系统的交换文件。您只能在具有加密交换文件/分区的系统上使用 passgenr

侧信道。与较老的passgen不同,passgenr没有针对侧信道攻击的防御措施。当您使用passgenr生成密码时,应确保没有不可信的人能在同一台机器上运行代码(即使是未授权用户),否则他们可能通过侧信道提取有关密码的一些信息。计划一旦稳定Rust可用,就将为passgenr添加侧信道防御措施。[计划链接](https://github.com/defuse/passgenr/issues/4)。

审计状态。虽然其作者很小心并且优先考虑安全性,但passgenr尚未由专业第三方进行审计。如果您有安全审计的经验,并愿意贡献一个审计,请与我们联系!

依赖项

~0.7–1MB