【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}' | ...
随机推荐
- e.target 和 e.srcElement 的使用问题
ie 下的event.srcElement从字面上可以看出来有以下关键字:事件.源(它的意思就是:当前事件的源), 我们可以调用他的各种属性就像:document.getElementById(&qu ...
- IOS SDK相机的详细解释/画廊(默认+他们的高清摄像头接口)
原版的blog,转载请注明出处 blog.csdn.net/hello_hwc 前言: 新NSURLSession的UploadTask的,结果写那个Demo的时候想要写成拍照上传.然后就想到先写一个 ...
- 2014牡丹江区域赛H(特里)ZOJ3826
Hierarchical Notation Time Limit: 2 Seconds Memory Limit: 131072 KB In Marjar University, stude ...
- 《浪潮之巅》完全系类——IT人士必读经典
浪潮之巅 第一章 帝国的余辉(AT&T) 浪潮之巅第二章 — 蓝色巨人(IBM) 浪潮之巅第三章 — “水果”公司的复兴 (乔布斯和苹果公司) 浪潮之巅第四章 — 计算机工业的生态链 浪潮之巅 ...
- 原生AJAX基础讲解及兼容处理
原文:原生AJAX基础讲解及兼容处理 AJAX = Asynchronous JavaScript and XML (异步的JavaScript和XML). AJAX不是新技术 ,但却是热门的技术.它 ...
- Installshield在安装结束时刷新系统
原文:Installshield在安装结束时刷新系统 在OnEnd里添加代码,两种解决方案 群友kevin的解决方案 #include "ifx.h" //Call to Win ...
- bluetooth发展(五岁以下儿童)------蓝牙功能测试(一个)
newton板已出版.下面再组织我调试的一小方面,,蓝牙功能的实现和测试: 转载请注明出处:http://blog.csdn.net/wang_zheng_kai 以下是我写的newton开发板中bl ...
- 快速构建Windows 8风格应用32-构建辅助磁贴
原文:快速构建Windows 8风格应用32-构建辅助磁贴 引言 Windows Phone中,我们开发者可能会开发的一个功能点是将数据列表中某一项"Pin To Start(固定到开始屏幕 ...
- javascript的预编译和执行顺序
原文:javascript的预编译和执行顺序 最近在复习javascript的事件处理时发现了一个问题,然后也是我来写javascript的预编译和执行顺序的问题 代码: 代码一<html> ...
- 利用PhantomJS进行网页截屏
利用PhantomJS进行网页截屏 关于PhantomJS PhantomJS 是一个基于WebKit的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种W ...