我需要在公共WPF應用程序中存儲加密算法的加密/解密密鑰,可以免費下載給任何人。
顯然,我想以安全的方式存儲這些密鑰,以便用戶可能看不到它們。如何將敏感信息存儲在.Net/WPF應用程序中?
正如我所看到的那樣,這是不可能的,因爲反編譯.Net應用程序非常容易,而且對它進行混淆並沒有太大的作用。我想不出有什麼地方可以存儲這些信息,這些信息或者不是用戶可訪問的,或者是「自然」加密的(比如某種「Windows保險庫」),但是用戶可以創建一個假裝成我自己的應用程序,他不會嗎?)
從用戶訪問(編譯)代碼和(清除)app.config的時刻起,我看不到如何在本地存儲敏感信息。
我看到很多幫助來編碼連接字符串和保護在IIS上的東西,但沒有在WPF應用程序上。
有什麼方法可以安全地存儲任何數據與.Net/WPF?
謝謝!
爲什麼不使用[單向加密(哈希)](http://en.wikipedia.org/wiki/Cryptographic_hash_function)來存儲您的密碼。然後你儲存這些。這樣,即使有人能夠訪問哈希密碼,它也是[不可行*](http://en.wikipedia.org/wiki/Computational_complexity_theory#Intractability)來解密它們。您仍然必須將這些存儲在安全的地方,但這比2路加密更好 – Liam
我們使用存儲在註冊表中的加密密鑰並使用ProtectedData類完成加密(http://msdn.microsoft.com/zh-cn/library/2fh8203k( v = vs.110)的.aspx)。只有系統管理員可以使用Entrophy,系統管理員可以生成這些加密數據並存儲到註冊表中,使用MSI安裝程序將註冊表推送到客戶端。在客戶端,我們使用WCF(它從machine.config中獲取它)服務來解密註冊表中的密鑰。我知道總是有辦法破解這個,但它比存儲在web.config中更安全。 – VRK
@Liam:這不是我要存儲的密碼,而是我想解密的信息,例如跟蹤ID。 – thomasb