我需要在公共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