【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}' | ...
随机推荐
- background-position 具体的使用说明
语法: background-position : length || length background-position : position || position 值: length : ...
- nodejs爬虫系统
其中express是服务端框架 request相当于前端的ajax请求 cheerio相当于jq 开始 首先我们先新建一个 crawler目录 执行 npm install express -g 命令 ...
- Hash散列算法 Time33算法
hash在开发由频繁使用.今天time33也许最流行的哈希算法. 算法: 对字符串的每一个字符,迭代的乘以33 原型: hash(i) = hash(i-1)*33 + str[i] ; 在使用时.存 ...
- veridata实验举例(2)验证表BONUS与表SALGRADE两节点同步情况
veridata实验举例(2)验证表BONUS与表SALGRADE两节点同步情况 续接前几篇文章: 1.GoldenGate配置(一)之单向复制配置 地址:点击打开链接 2.GoldenGate配置( ...
- 移动客户端与服务端Session那点秘密
众所周知,做过Web开发的小伙伴可能知道,在浏览器向服务器发一个请求,服务器端会为当前的访问者创建一个session会话,随着浏览器的关闭而会话结束.但是移动客户端咋整呢(IOS/Android啥的) ...
- 第3章3节《MonkeyRunner源码剖析》脚本编写示例: MonkeyImage API使用示例(原创)
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写<深入理解 MonkeyRunner>书籍“.但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在 ...
- linux监控命令全覆盖(图文说明)
1.1 top 1.1.1 命令说明 Top 命令能够实时监控系统的运行状态,并且可以按照cpu.内存和执行时间进行排序 1.1.2 参数说明 命令行启动参数: 用法: top -hv | -bcis ...
- 框架Asp.net Identity
框架Asp.net Identity 在Asp.net上,微软的membershop框架经历了Asp.net membership到Asp.net simple membership,再到现在的Asp ...
- linux下C语言中的flock函数使用方法 .
表头文件 #include<sys/file.h> 定义函数 int flock(int fd,int operation); 函数说明 flock()会依參数operation所指 ...
- OSG(OpenSceneGraphcow.osg)配置笔记
OpenSceneGraph是一款高性能的3D图形开发库.广泛应用在可视化仿真.游戏.虚拟现实.高端技术研发以及建模等领域.使用标准的C++和OpenGL编写而成,可以运行在Windows系列.OSX ...