1 个不稳定版本
0.1.1 | 2020年11月23日 |
---|
#1014 in 身份验证
26KB
phrase
密码生成器:无配置、128位安全、易记,并内置简化英语单词列表。
设计
该工具打印一个随机生成的128位安全密码。仅此而已。
"设计观点"是下面描述的 no-config
。没有选项或配置文件。从硬编码的列表中选择单词并打印,直到至少打印了128位的熵。有一个常量前缀,包括大写字母、数字和符号,以应对愚蠢的密码限制。这些不会提供任何安全功能,它们不需要,它们只是为了绕过对密码格式的无必要但流行的限制。
如果您需要加密密码,将其管道传输到加密程序。
如果您需要较短的密码,只需复制较短的前缀或将管道传输到命令以截断它。
如果您不能使用空格,将其管道传输到命令以替换或删除空格。
如果您需要不同的单词列表、不同的种子以生成符合独特密码限制条件的密码,或许多其他功能,有许多其他工具可以做到这些。这个工具保持简单。;-)
无配置宣言
无配置是一种比配置本身更广泛的设计观点:它关于让代码做窄、非常具体、但有用的东西。没有配置和很少的命令行参数是良好无配置设计的标志。
一个理想主义的启发式方法是避免添加任何功能,除非我们确信大于50%的用户需要它。
假设30%的用户需要一个代码中没有的功能。他们能否联合起来创建一个新工具来满足他们的需求?它能否与无配置应用程序干净地组合而不复杂化依赖项?如果两者都是肯定的,那么这是一个明显的胜利。如果只有第一个是肯定的,那么在我的书中仍然是一个胜利。
为什么无配置?
它应该适用于大量频繁使用的情况。
对于其他情况,使用其他工具,或者以Unix的方式组合工具(例如通过 sed
或 rage
管道)。
这样,开发人员和所有用户对行为、要求和代码有一个非常清晰的理解。
对于用户
用户将更容易了解代码的行为和限制。对于使用场景较少的用户,他们可能会在自己的流程中使用代码来解决他们的问题,或者使用不同的工具。
已经创建自己解决方案的用户可以确保解决方案对他们适用,如果不适用,他们更有能力找出原因。他们不太可能需要与开源志愿者来回沟通,诊断那些无配置工具不支持的问题。
同时,他们也没有通过将不常见的使用案例复杂性推给所有用户而干扰其他用户,因此该工具更有可能更有效地支持更狭窄的使用案例。
针对开发者
代码更少,因此更多维护者和代码理解者可能对代码有更全面和共享的理解。
更有可能被所有用户测试,因为使用它的人更有可能以相似的方式进行使用。
与其他代码或部署组合更容易,因为行为更易于理解。这是“回归Unix方式的根本”。
致谢
当前单词列表来自pyutil。由于作者熟悉单词列表的设计,我认为它比许多diceware-like替代方案具有更好的记忆性。它使用规范化的单词(词干形式),避免使用复数、所有格或动词形式。它排除了专有名词。它也进行了一些人工筛选。目标是保持单词选择简单,便于母语为英语的人记忆和拼写(可能偏向于美国英语)。
依赖关系
~520KB