2017-03-09 74 views
1

我正在編寫一個使用登錄名和密碼連接到服務器的工具。該工具的用戶必須在運行時提供工具的登錄名和密碼,以便能夠連接到服務器以獲取一些信息。存儲加密密碼並在運行時解密

但是,我正在對我的工具進行一些集成測試,因此測試應該能夠連接到服務器。我可以使用通用服務器的帳戶來執行此操作。
但我想自動化這些集成測試,所以我需要將通用憑證存儲在某處加密,集成測試在執行時解密它們(即使它們是通用的,它們仍然是證書,所以我是在將它們存儲爲未加密時不舒服)。

解決這個問題的方法是什麼?如果該工具能夠解密密碼,那麼這意味着它將擁有一些主密鑰,而且我認爲這是錯誤的。
我應該公開一些我發送加密值的外部服務來解密,這樣加密/解密將在該工具之外進行處理嗎?

謝謝

+0

什麼是你想測試?互聯網還在嗎?或者你的客戶仍然說出正確的協議?或者密碼仍然有效?這是你應該首先找到答案的問題。 – wallenborn

+1

也許你可以解釋一下你設想一個壞傢伙會竊取憑證的場景,因爲目前還不清楚你爲什麼要保護這些測試憑證,或者來自誰。肯定憑證不會在軟件的生產版本中出貨?那麼你是在保護他們不受其他開發者的影如果是這樣,他們不能簡單地在某處放置斷點來查看解密的憑據嗎? – PaulG

+0

@wallenborn我正在測試該工具在實時系統之前的行爲是否正確(與單元測試存根服務器相比)。 – Xendar

回答

0

我認爲這個問題沒有真正的解決方案。最後,某處必須是解密密碼的算法或密鑰。所以我可能會去加密key + obfuscationkey + code in a language that cant be reverse engineered

+0

這就是爲什麼我想到將加密和解密與工具分開的原因 – Xendar

+0

Speration會很有用,因爲java很容易被重新引用。但好混淆也很強 – Ocean15

+0

混淆只會隱藏我的價值(比如用*替換字符),因此無法取回原始值。也許我沒有完全明白你的答案呢? – Xendar