我正在構建一個可以管理GIT倉庫的應用程序。Git倉庫的正確密碼存儲
我選擇將存儲庫信息存儲在數據庫中,但我遇到了密碼問題。
問題: 當我遇到https +密碼安全的存儲庫時,我需要存儲密碼。 如果我想推送存儲庫上的更改,我將需要密碼爲純文本。
如果我散列密碼,我無法重用它。
什麼是一個很好的安全解決方案來存儲這些密碼,而不將它們存儲爲純文本?
我正在使用Java與JGit庫。
謝謝。
我正在構建一個可以管理GIT倉庫的應用程序。Git倉庫的正確密碼存儲
我選擇將存儲庫信息存儲在數據庫中,但我遇到了密碼問題。
問題: 當我遇到https +密碼安全的存儲庫時,我需要存儲密碼。 如果我想推送存儲庫上的更改,我將需要密碼爲純文本。
如果我散列密碼,我無法重用它。
什麼是一個很好的安全解決方案來存儲這些密碼,而不將它們存儲爲純文本?
我正在使用Java與JGit庫。
謝謝。
您將不得不將它們作爲純文本存儲在某個級別上:如您所說,您的應用程序依賴於擁有密碼。
如何存儲它們取決於您能夠處理的用戶交互級別以及您正在運行的系統 - 在Gnome桌面上,您可以在Windows上與seahorse
進行集成,您可能可以使用憑證保險庫。如果你無法整合,複製像KeePass這樣的方法可能是一個好主意。
如果您根本無法與用戶進行交互,那麼您可能還需要存儲未加密的數據,因爲無論如何您都必須存儲加密密鑰。
嘗試BouncyCastle [1]。它擁有自由許可下的大量加密算法。
這樣可以避免以明文形式存在,但是您隨後擁有「加密密鑰」,它又是您需要存儲在某處的密碼,至少在代碼中,可以使用基於字節碼的編程語言輕鬆進行反編譯像Java一樣,最好的選擇是使用操作系統支持,但對於Java,你可能需要自己實現。 – centic
存儲它們在SQLite數據庫(純文本),並用[SQLcipher]進行編碼(http://sqlcipher.net/)。存儲密碼的問題並不是什麼大問題,至少在你使用密碼的時候密碼會存在你的記憶中。 –