#安全密码 #密码 #可读 #生成 #安全 #命令行 #CLI

应用 genrepass-cli

从文本中提取的有序单词列表生成可读密码。为了提高安全性,随机插入数字和特殊字符。

3 个版本 (稳定)

1.1.1 2022年10月3日
1.1.0 2020年10月19日
0.0.0 2020年10月19日

命令行工具 中排名 2724

MIT 许可协议

23KB
267

可读密码生成器(CLI)

生成 从文本中提取的有序单词列表生成的 可读 密码。为了提高安全性,随机插入数字和特殊字符。

目的是用仍然非常安全但更容易书写的密码替换非常繁琐的手动输入标准密码。对于需要手动输入的罕见情况,例如在未同步到智能手机上的情况下。这也使得生成的密码很有趣,具体取决于您选择的源。

基于 Computerphile 视频编写:[如何选择密码](https://youtu.be/3NjQ9b3pgIg)。

可能的密码示例

> genrepass ~/Documents
Hemanag6estogetami~ssion

> genrepass -C ~/Journals/2022.md
Fr68omTheseMeth&odsY#ouCanT

> genrepass -Cp5 ~/Documents ~/Journals/2022.md
ModsSo$ThatPeopleAre7AbleTo
Shou$ldSt%illBeResp0ected
ThisSoftw&areAndIn4co$rporate
5Th~ingsT<0hatThrowYouOff
AtLeastEvo]keA,Menta3lImage

安装

目前适用于 Linux 和 Windows 的 32 位和 64 位版本。

Arch Linux

在 AUR 中可用,名称为 genrepass-bin

Scoop

也可以使用 Scoop 安装它

scoop install https://raw.githubusercontent.com/AlexChaplinBraz/genrepass-cli/master/genrepass.json

Cargo

通过 Cargo 可用,需要 Rust 从源代码编译。

cargoinstall genrepass-cli

手册

下载适合您系统的最新版本 发布版,解压缩并将其添加到 PATH 中。

用法

genrepass[标志] [选项] <路径>...

标志

-C, --capitalise 将每个单词的首字母转换为大写。这使得密码更容易阅读,但也会因首字母大写的可预测性而略微降低安全性。然而,高度提高的可读性使其始终值得使用。

-c, --clipboard 将生成的密码复制到剪贴板,而不是写入 stdout。

-d, --dont-lower 完全不转换成小写,保留原始的大小写。忽略 --force-lower,包括手动和自动设置。

-D, --dont-upper 完全不转换成大写,保留原始的大小写。忽略 --force-upper,包括手动和自动设置。

-f, --force-lower 强制指定数量的小写字母。如果设置了 --dont-lower,则会被忽略。

-F, --force-upper 强制指定数量的大写字母。如果设置了 --dont-upper,则会被忽略。

-h, --help 打印帮助信息并退出。

-k, --keep-numbers 选择在密码中保留源中的数字。它将数字块视为单词,不计入密码中插入的数字数量。

-X, --randomise 打乱单词顺序。如果源文本本身就是无序的单词列表,并且希望每次运行程序时顺序都不同,则很有用。

-r, --replace 替换原始字符。不是插入数字和特殊字符(这会保留原始单词),而是在随机位置替换字符。

-v, --version 打印版本信息并退出。

选项

-L, --length <RANGE> 设置密码长度。可以是范围如 24-30,这将生成该范围内的密码,或者可以是确切的数字如 25,用于生成指定长度的密码。 默认:24-30

-l, --lower-amount <RANGE> 小写字母数量。可以是范围如 2-4 或确切的数字如 2。如果没有小写字母,则自动打开 --force-lower 标志以小写形式转换到指定数量的字母。但如果至少有一个小写字母,则不会进行小写转换,除非手动打开 --force-lower默认:1-2

-n, --number-amount <RANGE> 插入的数字数量。可以是范围如 2-4 或确切的数字如 2。如果激活了 --keep-nums,则不考虑密码中已有的数字数量。 默认:1-2

-p, --pass-amount <INTEGER> 生成密码的数量。每个密码占一行。可用于提供可供选择的密码列表。默认:1

-R, --reset-amount <INTEGER> 在截断之前尝试生成密码的次数。如果范围太小或是一个确切数字,将难以获得一组合适的单词,因此如果密码超过了最大长度,单词选择将重新开始。但是,由于它会在找不到所需长度的情况下不断循环,所以它需要一个停止的方法,在这种情况下,简单地截断密码到最大长度。默认:10

-S, --special-chars <CHARS> 要插入的特殊字符。不支持非ASCII字符。默认:^!(-_=)$<[@.#]>%{~,+}&*

-s, --special-chars-amount <RANGE> 要插入的特殊字符数量。可以是范围,如2-4,或确切的数量,如2。默认:1-2

-u, --upper-amount <RANGE> 大写字母的数量。可以是范围,如2-4,或确切的数量,如2。如果没有大写字母,将自动打开 --force-upper 标志,将字母字符转换为大写。但是,如果至少有一个大写字母,则除非手动打开 --force-upper,否则不会进行任何大写化。默认:1-2

参数

<PATH>... 一个或多个文本文件或目录的路径,从中提取单词。

如果是目录,它将递归地解析目录中的每个文件,同时忽略非纯文本文件和跟随链接。

接受UTF-8字符,但将它们转换为ASCII用于密码。因此,如果遇到其他语言的单词,它将被转换成ASCII的音标拼写,如果遇到表情符号,它将被翻译成其含义,例如,:D将变成'微笑'。

为其他系统构建

没有macOS发布版本,因为我没有测试它们是否工作的方法,但从理论上讲,它们应该可以编译。系统的唯一要求是支持剪贴板,这看起来对macOS是支持的。

历史

这是从我的自己的shell脚本移植过来的。我写这个脚本是为了在学习Rust时进行练习,并在各个方面对其进行改进。

它曾经托管在genrepass上,但我意识到我可以从中提取出一个库,所以我做了,并且进一步改进了它,编写了良好的文档和合理的API。

为了从库中删除不必要的依赖项,程序的控制台部分被移动到genrepass-cli

捐赠

请考虑通过donate.alexchaplinbraz.com 支持我,以激励我继续这项工作。

许可证

MIT 协议

依赖项

~4.5–6MB
~104K SLoC