不少人第一眼看iPassword
觉得是1Password
,其实灵感确实是来自1Password,可是仍是有区别的。1Password数据是保存在服务端,iPassword的数据是保存在本地;1Password试用完须要收费,iPassword彻底开源而且免费;1Password功能全并且强大,iPassword功能比较简单单一。出于学习以及“穷”的目的开发了这款软件。git
废话很少说,咱们直接上图github
Electron + React + Webpack
架构React-Native
架构说下加密方案,主要是使用SHA256
(哈希加密)和AES
(对称加密),MD5太容易破解了果断放弃chrome
123
经过SHA256加密能够获得A665A45920422F9D417E4867EFDC4FB8A04A1F3FFF1FA07E998E86F7F7A27AE3
,可是A665A45920422F9D417E4867EFDC4FB8A04A1F3FFF1FA07E998E86F7F7A27AE3
按理来讲是没法解密获得123
,因此不少服务器上都不会把用户密码明文存储到数据库上,怕数据库管理员偷看到,都会经过相似的哈希加密,这样用户登陆的时候只要验证用户输入密码的哈希值与服务器上存储的哈希值是否一致就能够了AES
对称加密就很好理解了,就是加密解密都用同一把密钥。你开门关门都用同一把钥匙吧而后咱们来讲下iPassword的加密方案。首先用户首次登录的时候会要求输入一个密码keypassword做为主密码,并把keypassword的SHA256加密事后的密码保存到localStorage
,后面用户登陆的时候,只要验证用户输入的主密码的SHA256加密值跟localStorage
里面保存的keypassword加密值是否一致,就能知道用户输入的主密码是不是正确,而后会把用户输入的正确的明文密码保存在SessionStorage
里面,SessionStorage
里面的保存的数据会在用户关闭应用的时候清空数据库
当用户添加一条密码的时候,密码会被AES对称加密,密钥就是用户的keypassword,这样就作到用户只需记住一个密码,其余密码都经过这个密码加密保存到用户本身的电脑上服务器
再说下无线端的方案,无线端功能有所限制,没法添加密码,全部密码数据都来自PC端架构
首先咱们PC已经添加了多条密码,在PC端已经有加密事后的密码列表了,而后在PC端起一个WEB服务能够读取这些加密的密码,把地址生成一个二维码,无线端扫码就能同步到数据工具
更多细节就本身看代码吧,反正都开源了,这块不是一个很是严格的密码管理工具,可是对于平时的一些密码的管理够用了,若是你们有更好的技术方案,欢迎跟我交流学习学习