不少人第一眼看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服務能夠讀取這些加密的密碼,把地址生成一個二維碼,無線端掃碼就能同步到數據工具
更多細節就本身看代碼吧,反正都開源了,這塊不是一個很是嚴格的密碼管理工具,可是對於平時的一些密碼的管理夠用了,若是你們有更好的技術方案,歡迎跟我交流學習學習