22 个版本 (稳定版)

新版本 1.2.4 2024年8月15日
1.2.2 2024年7月8日
1.2.0 2024年4月22日
1.1.6 2022年10月13日
0.5.0 2022年6月17日

#101 in 认证

Download history 7/week @ 2024-04-28 6/week @ 2024-05-19 228/week @ 2024-07-07 9/week @ 2024-07-14 100/week @ 2024-07-28 163/week @ 2024-08-11

每月 263 次下载

MIT 协议

19KB
252

pkpw

Crates.io .github/workflows/cargo.yml

如果正确的是 correct horse battery staple,但却是宝可梦。

安装

cargo install pkpw

使用方法

命令行界面

$ pkpw -h
pkpw 1.2.4
Jesse Brooklyn Hannah <[email protected]>
What if correct horse battery staple, but Pokémon.

USAGE:
    pkpw [OPTIONS]

OPTIONS:
    -c, --copy                     Copy the generated value to the clipboard instead of displaying
                                   it
    -h, --help                     Print help information
    -l, --length <LENGTH>          Minimum length of the generated password
    -n, --count <COUNT>            Number of Pokémon names to use in the generated password
                                   [default: 4]
    -s, --separator <SEPARATOR>    Separator between Pokémon names in the generated password; either
                                   a single character, "digit" for random digits, or "special" for
                                   random special characters [default: " "]
    -V, --version                  Print version information

use pkpw::generate;
use rand::thread_rng;

let mut rng = thread_rng();
let password = generate(None, 4, " ", &mut rng);

但是它安全吗?

免责声明: 这只是估计,我有一个物理学学位,但我不是组合数学或密码学专家。

密码熵 是根据生成密码时使用的密码池大小 $R$ 和密码长度 $L$ 来计算的

$$ E = log_2(R^L) $$

其中,暴力破解攻击需要平均 $2^{E-1}$ 次猜测来破解具有 $E$ 位熵的密码。

默认情况下,pkpw 从包含 1025 个已知宝可梦 的池中随机选择 4 个宝可梦名字,结果熵为

$$ E = log_2(1025^4) \approx 40.01 $$

位。一个知道使用 1025 个已知宝可梦名字作为值的池的字典攻击,平均需要 $1.104 \times 10^{12}$ 次猜测来正确猜测密码,或者大约需要 34 年,11 个月和 21 天(每秒 1000 次猜测)。

每个宝可梦名字的平均长度约为 7.67 个字符,使用默认设置生成的密码平均长度约为 34 个字符(4 个宝可梦名字,每个名字之间有一个空格,总共 3 个空格)。使用包含 95 个标准 US 键盘字符(字母数字、特殊字符和空格)的池的暴力破解攻击将面对

$$ E = log_2(95^{34}) \approx 222.375 $$

位的熵,平均需要 $1.748 \times 10^{67}$ 次猜测,或者大约需要 $5.540 \times 10^{56}$ 年,才能正确猜测密码。

所有宝可梦名称均为™和©宝可梦公司所有。本项目中除外的所有内容均为Jesse Brooklyn Hannah所有,并按照MIT许可证发布。

依赖项

~3–17MB
~185K SLoC