【C#】聊聊不需要记密码的密码管理
密码管理(Password Management)肯定所有人都不会陌生,密码管理的来源也是来自于实际需求,当人们需要使用到密码的场景越来越多,场景也越来越复杂,密码的记录就成为了“难题”和“负担”,很简单举起两个栗子:当我只有一个银行卡的时候,可能我记得住它的“Pos支付密码”,如果银行卡多起来呢?换工作就多一张工资卡、搞活动买基金开户、朋友推荐办信用卡、考试机构指定xx银行借记卡......,有时不是你想不想多起来的问题;这这是银行卡,平时上网QQ有几个?微信有几个?支付宝就需要俩密码吧,京东可能也有俩,购物网站、各类论坛、大小银行、各类理财......
So so,密码管理应运而生,用一个软件帮你“存储”你的私密信息,然后你只需要记住一个密码,就可以“查看”你存储的私密信息,这就是密码管理软件基础的模式。我原来也为自己做个一个密码管理的小玩意儿,后来发现一个问题,我还是要记录至少一个密码,而且万一把这个密码忘记了那就完蛋了。而且还有一个问题,如果别人知道了你的密码,也可以随便查看,密码泄露那就誰也没有办法了。想来想去,我这种“懒人”还是觉得我还得记得一个密码还是累,万一哪天忘记了或者被人猜出来理论上,就可以在任何地方随时尝试输入破解。我就想把这个东西再改进一下,我不想记密码了,一个都不想了,还得相对安全,怎么办...
这是一个加密本质的问题我觉得,被锁起来的数据就是“锁”,密码就是“钥匙”,无论加密算法简单不简单,密码长度3个还是300个,其本质就是不要让人同时得到锁和钥匙,其实就 OK 了,我又不是国家机关秘密组织,被黑客主动攻击的概率恐怕比中500万还小,哪怕加密算法简单只要能遮人耳目即可,不能同时得到钥匙和锁对多数人来说其实就够用了。所以,我可以借鉴有些加密软件的功能,即不让用户以输入密码的方式作为加密手段,这样用户就不必记录密码。用户不必关心软件如何运转,软件只需要加密完成,把钥匙给用户,告诉他“好好保管!”就行了,按照这个思路,我给自己重做了一个。
我的做法是,用户只需要输入要加密什么(明文),软件自己生成“钥匙”、自己加密、自己存储,完事儿把钥匙交给用户,这个逻辑虽然简单但是被突破也不容易,理由如下:
1. 如果数据和钥匙文件没有被同时得到,那几乎没有被破解的可能(托加密算法的福,虽然用户不必关心加密算法是什么)
2. 数据和钥匙是两个独立的文件,用户可以随便更改文件名、扩展名,甚至对文件做乱码加密,只要过程是可逆的便可恢复。所以,就算同时得到了,能知道它们有关联的也是神仙了,比如一个文件叫“勇气.mp3”,另一个叫“公司人事资料文档.txt”,还可以把它们放到不同的路径、不同的硬盘,甚至一个在邮箱一个在本地,反正随便吧...
3. 就算知道了两个文件有关联,程序用什么算法你还得知道,因为你要破解...(这是个道理,虽然我现在用的逻辑很简单)
经过以上三点,如果你让别人拿到了两个文件、还让人知道这俩文件一个是锁一个是钥匙,还让人拿到了对应的程序或者是算法...那我也是醉了,那你直接告诉人家就得了。
上俩图吧,我是怎么工作的,首先添加内容,因为是 Lite 版,随意一切一切都精简
点击保存后,程序自动加密,用户不用自己提供密码,也就是钥匙。完成后,结果是这样的
添加完成后,分别把数据和钥匙保存成两个文件,分别存放,别丢就OK了!
【C#】聊聊不需要记密码的密码管理的更多相关文章
- Ubuntu16---安装mysql5.7未提示输入密码,安装后修改mysql密码默认密码
Ubuntu16安装mysql5.7未提示输入密码,安装后修改mysql密码默认密码 mysql默认密码为空 但是使用mysql -uroot -p 命令连接mysql时,报错 ERROR 1045 ...
- Postgres使用ALTER USER命令修改用户的密码、密码过期,锁定,解锁
使用ALTER USER命令修改用户的密码.密码过期,锁定,解锁 (1)修改用户的口令,将用户的口令修改为新的密码 highgo=#create user test with password ‘te ...
- linux和windows互传文件/用户配置文件和密码配置文件/用户组管理/用户管理
2.27linux和windows互传文件 3.1 用户配置文件和密码配置文件 3.2 用户组管理 3.3 用户管理 linux和windows互传文件 显示日期date [root@centos_1 ...
- Ubuntu 破解密码及用户管理
Ubuntu 破解密码及用户管理 ubuntu 16.04 破解密码 useradd 实现以下要求 1.ubuntu16.04破解密码 2.创建下面的用户.组和组成员关系 名字为xipudata 的组 ...
- Laravel实现找回密码及密码重置的例子
https://mp.weixin.qq.com/s/PO5f5OJPt5FzUZr-7Xz8-g Laravel实现找回密码及密码重置功能在php实现与在这里实现会有什么区别呢,下面我们来看看Lar ...
- MYSQL命令练习及跳过数据库密码进行密码重新设置
2.看当前所有数据库:show databases; 3.进入mysql数据库:use mysql; 4.查看mysql数据库中所有的表:show tables; 5.查看user表中的数据: ...
- 【C#】聊聊不需要记密码的密码管理补充帖 —— 具体实现
开篇第一句话,就是“小白继续,有实际经验的兄弟们可以洗洗睡了”,因为这个 Lite 版是个实验性的实现,也由于水平原因源码不忍直视,所以如果你坚持看完了,请留下宝贵意见. 以下,干货: 基本模式: 程 ...
- git ssh https 踩坑记 ---- 域账号密码更新
前几天突然通知要更新公司的域账号密码,然后git pull就一直报 fatal: Authentication failed for 'https://git ... 很奇怪的是,有一个项目git p ...
- MySQL--忘记MYSQL管理员密码
如root用户密码,可以按照以下方式来修改: STEP1: 停止MySQL服务 ps -ef | grep -v 'grep' | grep 'mysqld' | awk '{print $2}' | ...
随机推荐
- oracle_恢复流程图
网上看到一个很好的数据恢复检查图片,共享给大家
- javascript中字符串常用方法总结
字符串是javascript编程中不可或缺的元素,掌握字符串常用的方法也是我们学习过程中的必经之路,下面我们总结一些最常用的的字符串方法. string.charAt(postion) charAt方 ...
- C#操作Excel初探
近期一段时间正好在做winform导出Excel报表的问题,学习了一下C#操作Excel的一些方法(如:向Excel中插入图片:删除Excel指定sheet中的某行或某列,在Excel指定的单 ...
- SQL2005性能分析一些细节功能你是否有用到?(二)
原文:SQL2005性能分析一些细节功能你是否有用到?(二) 上一篇:SQL2005性能分析一些细节功能你是否有用到? 我简单的提到了些关于SQL性能分析最基本的一些方法,下面的文章我会陆续补充.前面 ...
- Swift语言指南(八)--语言基础之元组
原文:Swift语言指南(八)--语言基础之元组 元组 元组(Tuples)将多个值组合为一个复合值.元组内的值可以是任何类型,各个元素不需要为相同类型(各个元素之间类型独立,互不干扰--Joe.Hu ...
- Linux环境编程相关的文章
Linux环境编程相关的文章 好几年没有接触Linux环境下编程了,好多东西都有点生疏了.趁着现在有空打算把相关的一些技能重拾一下,顺手写一些相关的文章加深印象. 因为不是写书,也受到许多外部因素限制 ...
- 程序员面试必备经典CTCI,谷歌面试官经典作品!
1.1 判断一个字符串中的字符是否唯一 1.2 字符串翻转 1.3 去除字符串中重复字符 1.8 利用已知函数判断字符串是否为另一字符串的子串 2.1 从链表中移除重复结点 2.2 实现一个算法从一个 ...
- white-space的值
white-space的值:normal 默认.空白会被浏览器忽略.pre 空白会被浏览器保留.其行为方式类似 HTML 中的 标签.nowrap 文本不会换行,文本会在在同一行上继续,直到遇到 标签 ...
- 【麦子学院】OpenCV教程函数总结
个自带样例. parter 1: No1. adaptiveskindetector.cpp 利用HSV空间的色调信息的皮肤检測,背景不能有太多与肤色相似的颜色.效果不是特别好. No2. bagof ...
- linux有用技巧:使用快照制作虚拟机
在日常的学习其中,假设遇到了集群和负载均衡类的实验,须要用到大量的虚拟机,假设一个一个的去创建,显然是很费力和低效的.所以今天交给大家怎样用快照来制作虚拟机.想要多少给你多少^_^.仅仅要内存够用! ...