密碼管理工具 - 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服務能夠讀取這些加密的密碼,把地址生成一個二維碼,無線端掃碼就能同步到數據工具

開源地址

更多細節就本身看代碼吧,反正都開源了,這塊不是一個很是嚴格的密碼管理工具,可是對於平時的一些密碼的管理夠用了,若是你們有更好的技術方案,歡迎跟我交流學習學習

相關文章
相關標籤/搜索