密码管理工具 - iPassword

为何要作iPassword

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

iPassword提供哪些功能

废话很少说,咱们直接上图github

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

说下技术实现

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

加密方案

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

  • 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服务能够读取这些加密的密码,把地址生成一个二维码,无线端扫码就能同步到数据工具

开源地址

更多细节就本身看代码吧,反正都开源了,这块不是一个很是严格的密码管理工具,可是对于平时的一些密码的管理够用了,若是你们有更好的技术方案,欢迎跟我交流学习学习

相关文章
相关标签/搜索