这是一个基于确定性算法的密码生成器,可以根据主密码和网站域名生成唯一且复杂的密码。
thiliapr/password_generator 是自由软件,遵循 Affero GNU 通用公共许可证第 3 版或任何后续版本。你可以自由地使用、修改和分发该软件,但不提供任何明示或暗示的担保。
人们常说“不要在不同网站使用相同密码”,但又很难记住一大堆不同密码。
本工具采用确定性算法,只需记住一个主密码,即可为不同网站生成不同的强密码,无需存储任何密码数据。
换句话说,你就不用记那么多不同的密码了,只需要记住一个主密码就行了。
- 确定性生成: 相同输入永远产生相同输出
- 双重哈希引擎:
- 快速的 BKDR 哈希。向后兼容 2023 年的黑历史的 C 版本,主密码和服务名不能包含 Unicode 字符集,只能用标准 ASCII 字符集
- 安全的 scrypt 哈希。默认,支持任意字符集甚至是字节串(自己找代码 API 调去吧)
- 可定制密码长度: 支持无限位密码长度(但是注意,太长的密码可能产生循环)
- 跨平台: 你可以在 Windows、Linux 甚至 Android 使用这个密码生成器。
- Python 3.9 或更高版本(因为使用了泛型)
- 一个好记但强的主密码
- 你要生成密码的网站域名(如
github.com,google.com),我个人建议不要使用二级域名,而是使用一级域名,这样方便写(比如不用www.google.com, 而是google.com)
# 克隆仓库
git clone https://github.com/thiliapr/password_generator.git
cd password_generator# 使用默认的 scrypt 引擎生成 16 位密码
python password_generator.py "私は夏色まつりが一番好きです!" "youtube.com"
# 指定密码长度
python password_generator.py "東方プロジェクトMusicIsTheBest" "touhou-project.news" -l 20
# 使用 BKDR 引擎(向后兼容,但不推荐用于新密码)
python password_generator.py "YouCannotUseUnicodeCharactersHere" "github.com" -e bkdr
# 静默模式(仅输出密码,不显示耗时信息)
python password_generator.py "AuthorIsLearningJapaneseInDuolingoToListenASMR..." "duolingo.com" -q- 主密码安全: 主密码泄露意味着所有派生密码泄露
- 无密码恢复: 忘记主密码 = 丢失所有密码
- 网站限制: 某些网站可能有特殊字符限制,可能需要手动调整
- 选择强主密码: 允许 Unicode 字符集,你可以写中文、英语、日语、俄语、世界语、阿拉伯语、数学符号、Emoji,甚至混着写,只要你记得住。如果你这么做,攻击者想想计算量就开心了
- 备份主密码: 写在纸上,存放在安全的地方,比如你家保险柜
- 不要使用可能泄露了的主密码: 如果你用 BKDR 生成过密码,那就不要再在新版 scrypt 引擎使用这个主密码。为什么?因为虽然攻击者难以破解 scrypt 的密码参数,但是却很容易破解 BKDR 引擎生成的参数。攻击者可能通过以前网站泄露的密码找到你的主密码,所以它变得不安全了
如果你之前使用 BKDR 引擎生成的密码:
- 记录所有使用 BKDR 生成的网站密码
- 为每个网站使用 scrypt 引擎生成新密码
- 更新网站密码
Q: scrypt 引擎为什么这么慢?
A: 慢 = 抗暴力破解。你能接受密码生成 1 秒的延迟,但攻击者不能。攻击者想要暴力尝试 1000 密码需要 16.7 分钟。
