博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
密码管理工具 - iPassword
阅读量:5734 次
发布时间:2019-06-18

本文共 1514 字,大约阅读时间需要 5 分钟。

为什么要做iPassword

很多人第一眼看iPassword以为是1Password,其实灵感确实是来自1Password,但是还是有区别的。1Password数据是保存在服务端,iPassword的数据是保存在本地;1Password试用完需要收费,iPassword完全开源并且免费;1Password功能全而且强大,iPassword功能比较简单单一。出于学习以及“穷”的目的开发了这款软件。

iPassword提供哪些功能

废话不多说,我们直接上图

  • 首先是用户只需要记住一个密码,这点跟1Password一致,通过一个密码管理多个密码
  • 支持Chrome导出的csv格式文件导入,这样保存在chrome上的密码就可以直接导入到iPassword了,但是有个问题就是csv格式里的name字段还是要自己编辑下的,不然名称显示非常的乱
  • 支持搜索功能,简单做了下匹配
  • 自动获取Logo,先去页面上看有没有Logo,没有再根据名字查找相应App的Logo
  • PC端数据同步到手机端,手机端通过扫码PC端提供得二维码同步密码数据

说下技术实现

  • PC端采用Electron + React + Webpack架构
  • 无线端采用React-Native架构

加密方案

说下加密方案,主要是使用SHA256(哈希加密)和AES(对称加密),MD5太容易破解了果断放弃

  • SHA256加密类似于MD5加密,属于不可逆加密,举个栗子:123通过SHA256加密可以得到A665A45920422F9D417E4867EFDC4FB8A04A1F3FFF1FA07E998E86F7F7A27AE3,但是A665A45920422F9D417E4867EFDC4FB8A04A1F3FFF1FA07E998E86F7F7A27AE3按理来说是无法解密得到123,所以很多服务器上都不会把用户密码明文存储到数据库上,怕数据库管理员偷看到,都会通过类似的哈希加密,这样用户登录的时候只要验证用户输入密码的哈希值与服务器上存储的哈希值是否一致就可以了
  • AES对称加密就很好理解了,就是加密解密都用同一把密钥。你开门关门都用同一把钥匙吧

然后我们来说下iPassword的加密方案。首先用户首次登陆的时候会要求输入一个密码keypassword作为主密码,并把keypassword的SHA256加密过后的密码保存到localStorage,后面用户登录的时候,只要验证用户输入的主密码的SHA256加密值跟localStorage里面保存的keypassword加密值是否一致,就能知道用户输入的主密码是否是正确,然后会把用户输入的正确的明文密码保存在SessionStorage里面,SessionStorage里面的保存的数据会在用户关闭应用的时候清空

当用户添加一条密码的时候,密码会被AES对称加密,密钥就是用户的keypassword,这样就做到用户只需记住一个密码,其他密码都通过这个密码加密保存到用户自己的电脑上

无线端方案

再说下无线端的方案,无线端功能有所限制,无法添加密码,所有密码数据都来自PC端

首先我们PC已经添加了多条密码,在PC端已经有加密过后的密码列表了,然后在PC端起一个WEB服务可以读取这些加密的密码,把地址生成一个二维码,无线端扫码就能同步到数据

开源地址

更多细节就自己看代码吧,反正都开源了,这块不是一个非常严格的密码管理工具,但是对于平时的一些密码的管理够用了,如果大家有更好的技术方案,欢迎跟我交流学习

转载于:https://juejin.im/post/5b7130abf265da2835153d1a

你可能感兴趣的文章
asp.net中调用COM组件发布IIS时常见错误 80070005解决方案
查看>>
分享一段ios数据库代码,包括对表的创建、升级、增删查改
查看>>
如何书写高质量的jQuery代码
查看>>
Activity的生命周期整理
查看>>
【记录】JS toUpperCase toLowerCase 大写字母/小写字母转换
查看>>
在 Linux 系统中安装Load Generator ,并在windows 调用
查看>>
Visifire charts ToolBar
查看>>
Mysql查询
查看>>
数据传输流程和socket简单操作
查看>>
利用广播实现ip拨号——示例
查看>>
ProbS CF matlab源代码(二分系统)(原创作品,转载注明出处,谢谢!)
查看>>
OC中KVC的注意点
查看>>
JQ入门(至回调函数)
查看>>
1112: 零起点学算法19——输出特殊值
查看>>
【洛天依】几首歌的翻唱(无伴奏)
查看>>
strcspn
查看>>
OpenSSL初瞻及本系列的博文的缘由
查看>>
ISO8583接口的详细资料
查看>>
tmux不自动加载配置文件.tmux.conf
查看>>
经验分享:JavaScript小技巧
查看>>