开始

之前在学校的时候,注册网站喜欢每次随机想一个密码,然后拿小本子记下来,每次登陆网站的时候看一下。可是这样有很多不方便的地方,例如登陆的时候,身边并没有密码本。而且密码都是明文,很不安全。因为密码的事情经常被吐槽。后来决定只用4个密码,分为4级,同一级别的应用密码相同,例如购物网站一个密码,一些博客,共享单车什么的共享一个普通密码,可是这样又很不安全,于是决定用程序将密码管理起来。

现在已经有很多成熟的密码管理工具,例如1password、keepass等,用户反馈也比较好,相对安全。可是觉得不看到代码的实现,不放心将密码交给别人管理,于是决定自己写一个小工具。

第一阶段【OK】

本工具的密码加解密用的AES256算法,密码存储在properties文件里,如下:

1
2
3
qq = onQ9HCrmFpi9veRwVUys4wLLJu1ssBTDt0fb9pf5fHw=
weixin = 5Eb2RRgpEEd05vptsqZxuwGwhhqGHGY/VZb7wMnIAoU=
baiduyunpan = HacMLaEDGXGEwXgTgYYLbXyN13w6gQgpUtSQqZ7pX+E=

密码的存取都是通过程序完成,使用方法如下。
使用方法
下载源码到本地,代码见github:git@github.com:zhuzhu1/passmg.git。
首先需要输入一个主密码,程序不会存储主密码到文件,所以自己一定要记得这个密码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Please enter the master password: testmain
***********Begin*************
get item Get the password for item.
get item1 item2... Get the password for items. Items are separated by spaces.
set item *** Set the password for item.
getall Get the password for all items.
quit Exit the program.
***********End*************
Please enter the command to execute: get qq
qq=aa123
Please enter the command to execute: set yy yuyu
yy=f612WetoETx4C3thtCVupOLXDqDzgeMGNfWILG1UhAA=
Please enter the command to execute: get yy
yy=yuyu
Please enter the command to execute: quit

以上,一个简单的密码管理工具基本完成。

一些问题总结
1.使用AES256时报 Illegal key size 错误。
解决:由于默认的java仅支持AES128,所以需要下载jar包,local_policy.jar 和 US_export_policy.jar 替换掉原来安装目录jre\lib\security 下的两个jar包就可以了。下载链接参考:https://stackoverflow.com/questions/6481627/java-security-illegal-key-size-or-default-parameters

第二阶段【待续】

看keepass的源码的实现,优化密码管理工具。