2 个版本

使用旧的 Rust 2015

0.1.1 2019 年 6 月 23 日
0.1.0 2019 年 6 月 23 日

#1045 in 身份验证

MIT 许可证

33KB
728

Appveyor Build Status Travis Build Status

dpg (diceware 密码生成器)

dpg 是一个简单的可执行程序,它帮助使用 diceware 方法生成强大且易于记忆的密码。

什么是 diceware?

强密码的常见问题是很难记忆。diceware 方法 () 旨在解决这个问题。这种方法基于生成包含几个单词(4 个或更多)的密码。与随机字母、特殊字符、数字等随机字符串相比,记住几个单词更容易,尤其是那些可以以某种方式可视化的单词。diceware 的一种很好的解释可以在 xkcd 的某个漫画中找到

alt text

Diceware 方法由其作者 Arnold G. Reinhold 详细描述: http://world.std.com/~reinhold/diceware.html

为什么是 dpg?

这个应用程序是为了熟悉 Rust 编程语言而创建的。这是我用 Rust 编写的第一个项目。我只是想检查一下这个语言在比 kata 稍微复杂一点的东西上怎么样。这个项目使我能够研究 Rust 项目的结构(将代码拆分为模块)、测试。

Diceware 列表

dpg 需要使用单词列表(diceware 单词列表)。目前应用程序有两个内置列表:一个是包含英语单词的列表(默认),另一个是包含波兰语的列表(必须明确指定)。

英语单词列表取自 FFI 网站: https://www.eff.org/deeplinks/2016/07/new-wordlists-random-passphrases 波兰语单词列表是我创建的( https://github.com/MaciekTalaska/diceware-pl ) - 这项工作基于 Piotr (DrFugazi) Tarnowski 创建的列表。

Mathias Gumz 的仓库 包含不同语言的 diceware 列表。

安全性

Dpg 使用来自 rand crate 的 OsRng(https://crates.io/crates/rand)。Rand crate 文档指出: "需要熵源进行加密目的的应用必须使用 OsRng,该随机数生成器从操作系统提供的数据源读取随机数(例如 Unix 的 /dev/urandom 或 Windows 的 CryptGenRandom())。此模块提供的其他随机数生成器不适用于此类目的。"

选项

-l:<language> 要使用的语言列表 - 目前仅支持 'en'(英语)或 'pl'(波兰语)。默认使用 'en',即生成由英语单词组成的密码时无需显式指定此选项

-w:<number> 要生成的单词数量(密码长度以单词计)。
 最小值:1
 最大值:255

-p:<number> 一次性生成的密码数量
 默认值:1
 最小值:1
 最大值:255

-s:<character> 用于分隔单词的字符
 默认值: -(短横线)

标志

-c 将生成的密码复制到剪贴板

-d 模拟骰子选项。目前 dpg 可以在两种不同的模式下工作
   a) '简化模式',其中只生成一个随机数,以从一个列表中获得单个单词
   b) 'diceware 显式'模式,其中生成多个随机数,每个随机数相当于掷一个骰子,用于从列表中检索单个单词

   这两种模式提供相同的安全性(因为使用相同的、加密安全的随机数生成方法),但显然第二种模式(可以通过使用 -d 开关来启用)要慢一些,因为需要更多的操作。除非生成大量非常长的密码,否则这不应该引起注意。待办事项:添加更多选项

-i:<file path> 外部单词列表文件的路径

安装/使用

dpg 可在 crates.io 上找到,因此安装它最简单的方法是使用 cargo: cargo install dpg

这将下载、编译并将二进制文件存储在 ~/.cargo/bin 目录中,这应该使 dpg 作为命令行工具对当前用户可用。

许可证

Diceware 是 Arnold G. Reinhold 的商标(™)(http://world.std.com/~reinhold/diceware.html

所使用的英语单词列表是由电子前沿基金会(https://www.eff.org/about)创建并版权保护的。

波兰语单词列表是我自己创建的,但基于 Dr Piotr 'Fugazi' Tarnowski 的工作。

依赖关系

~0.3–1.2MB
~20K SLoC