【C#】聊聊不需要记密码的密码管理

  密码管理(Password Management)肯定所有人都不会陌生,密码管理的来源也是来自于实际需求,当人们需要使用到密码的场景越来越多,场景也越来越复杂,密码的记录就成为了“难题”和“负担”,很简单举起两个栗子:当我只有一个银行卡的时候,可能我记得住它的“Pos支付密码”,如果银行卡多起来呢?换工作就多一张工资卡、搞活动买基金开户、朋友推荐办信用卡、考试机构指定xx银行借记卡......,有时不是你想不想多起来的问题;这这是银行卡,平时上网QQ有几个?微信有几个?支付宝就需要俩密码吧,京东可能也有俩,购物网站、各类论坛、大小银行、各类理财......

  So so,密码管理应运而生,用一个软件帮你“存储”你的私密信息,然后你只需要记住一个密码,就可以“查看”你存储的私密信息,这就是密码管理软件基础的模式。我原来也为自己做个一个密码管理的小玩意儿,后来发现一个问题,我还是要记录至少一个密码,而且万一把这个密码忘记了那就完蛋了。而且还有一个问题,如果别人知道了你的密码,也可以随便查看,密码泄露那就誰也没有办法了。想来想去,我这种“懒人”还是觉得我还得记得一个密码还是累,万一哪天忘记了或者被人猜出来理论上,就可以在任何地方随时尝试输入破解。我就想把这个东西再改进一下,我不想记密码了,一个都不想了,还得相对安全,怎么办...

  这是一个加密本质的问题我觉得,被锁起来的数据就是“锁”,密码就是“钥匙”,无论加密算法简单不简单,密码长度3个还是300个,其本质就是不要让人同时得到锁和钥匙,其实就 OK 了,我又不是国家机关秘密组织,被黑客主动攻击的概率恐怕比中500万还小,哪怕加密算法简单只要能遮人耳目即可,不能同时得到钥匙和锁对多数人来说其实就够用了。所以,我可以借鉴有些加密软件的功能,即不让用户以输入密码的方式作为加密手段,这样用户就不必记录密码。用户不必关心软件如何运转,软件只需要加密完成,把钥匙给用户,告诉他“好好保管!”就行了,按照这个思路,我给自己重做了一个。

  我的做法是,用户只需要输入要加密什么(明文),软件自己生成“钥匙”、自己加密、自己存储,完事儿把钥匙交给用户,这个逻辑虽然简单但是被突破也不容易,理由如下:

1. 如果数据和钥匙文件没有被同时得到,那几乎没有被破解的可能(托加密算法的福,虽然用户不必关心加密算法是什么)

2. 数据和钥匙是两个独立的文件,用户可以随便更改文件名、扩展名,甚至对文件做乱码加密,只要过程是可逆的便可恢复。所以,就算同时得到了,能知道它们有关联的也是神仙了,比如一个文件叫“勇气.mp3”,另一个叫“公司人事资料文档.txt”,还可以把它们放到不同的路径、不同的硬盘,甚至一个在邮箱一个在本地,反正随便吧...

3. 就算知道了两个文件有关联,程序用什么算法你还得知道,因为你要破解...(这是个道理,虽然我现在用的逻辑很简单)

经过以上三点,如果你让别人拿到了两个文件、还让人知道这俩文件一个是锁一个是钥匙,还让人拿到了对应的程序或者是算法...那我也是醉了,那你直接告诉人家就得了。

上俩图吧,我是怎么工作的,首先添加内容,因为是 Lite 版,随意一切一切都精简

点击保存后,程序自动加密,用户不用自己提供密码,也就是钥匙。完成后,结果是这样的

添加完成后,分别把数据和钥匙保存成两个文件,分别存放,别丢就OK了!

原文地址:https://www.cnblogs.com/cinlap/p/4900617.html