Passman 一个简单的密码管理工具
最近登录 Gmail 的时候 Google 提醒由于很多第三方网站被撞库导致一些密码不安全,安全起见想着还是把各个网站的密码统一更新一下吧,但如何设置密码成了一个问题。本来想找个第三方的工具,但是没找到趁手了,想了下自己写一个也不是特别麻烦,于是就有了这个工具:passman
原理:
- 选取一个主密码(尽量复杂)
- 生成种子数据:随机生成 228 字节的 Buffer,用主密码对种子数据进行加密,加密算法采用 AES-256-GCM,生成加密后的种子数据
- 选取标识字符串:对需要密码的网站选取一个标识字符串,可以采用网站的域名(如 twitter.com)
- 用加密后的种子数据和标识字符串来创建一个加密安全伪随机数生成器(CSPRNG),采用的是 AES-256-CTR 算法
- 用 CSPRNG 来生成随机密码。
使用方法:
通过 NPM 安装
npm i passman -g
查看帮助 passman -h
> passman -h
Usage: passman [options] [command]
Options:
-v, --version output the version number
-h, --help display help for command
Commands:
init [options] init config file: .passman.json
list|ls [query] list accounts
get <service> get account
add <service> [username] add account
backup [file] backup data to file (default: passman.dat)
help [command] display help for command
初始化配置文件 passman init
:会要求输入主密码,然后自动生成种子数据,保存配置文件到当前目录
> passman init
✔ Master password … *****
✔ Repeat password … *****
✔ Do you want to use seed? … yes
✔ Save master password locally? … no
添加账号 passman add <service> [username]
> passman add twitter.com helloyou
✔ Length of password … 10
✔ How many uppers at least? … 3
✔ How many lowers at least? … 3
✔ How many digits at least? … 1
✔ How many symbols at least? … 1
✔ Master password … *****
Your username is: helloyou
Your password is: xxxxxxxxxx
✔ Save the password locally? … yes
列出所有账号 passman ls
> passman ls
Accounts: 2/2
=> twitter.com (helloyou)
=> github.com (helloyou)
获取账号密码 passman <service>
或 passman get <service>
> passman twitter
Your username is: helloyou
Your password is: xxxxxxxxxx
备份数据 passman backup [file]
备份的数据是通过主密码加密的,可以将其保存到网盘里,注意一定要记住主密码。
> passman backup backup.dat
Backup successful to:
/Users/demo/backup.dat
通过备份恢复数据 passman init -f <file>
> passman init -f backup.dat