2 个不稳定版本
使用旧的 Rust 2015
0.2.0 | 2018 年 4 月 9 日 |
---|---|
0.1.0 | 2018 年 4 月 9 日 |
#818 in 身份验证
94KB
7.5K SLoC
passgenr
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
库
要使用此库,将以下内容添加到您的 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