.net 如何使用wpf在客户端存储敏感信息

.net 如何使用wpf在客户端存储敏感信息,.net,wpf,security,dll,.net,Wpf,Security,Dll,如何在客户端计算机上存储敏感信息,如第三方组件的许可证或文件解密密钥 目前,此类信息被写入设置文件,即dll中包含的内容。 但是如果您反编译dll,那么您可以找到这些值 该应用程序是在WPF中构建的,并且大部分处于脱机状态。如果它位于客户端,则不可能在没有服务器验证的情况下达到100%的安全性:您无法加密解密密钥,必须将其以明文形式保留在某个地方 同时,通常只需在许可证中添加一个验证即可-例如证书有一行,该行是证书的哈希,加上应用程序中硬编码的盐。如果用户试图编辑他们的许可证,哈希将更改,您可以

如何在客户端计算机上存储敏感信息,如第三方组件的许可证或文件解密密钥

目前,此类信息被写入设置文件,即dll中包含的内容。 但是如果您反编译dll,那么您可以找到这些值


该应用程序是在WPF中构建的,并且大部分处于脱机状态。

如果它位于客户端,则不可能在没有服务器验证的情况下达到100%的安全性:您无法加密解密密钥,必须将其以明文形式保留在某个地方

同时,通常只需在许可证中添加一个验证即可-例如证书有一行,该行是证书的哈希,加上应用程序中硬编码的盐。如果用户试图编辑他们的许可证,哈希将更改,您可以抛出一个错误


对于解密密钥,您应该查看公钥/私钥对,但如上所述,您至少不能加密解密密钥,除非存储另一个未加密密钥

每个dll都可以反编译,这只是事实。您唯一能做的就是使用代码混淆,并以难以准备的方式将键添加到dll中。使阅读隐藏内容所需的“犯罪能量”达到合理的高度


至于您的情况:最好不要将许可证存储在嵌入DLL的文件中,该文件非常易于阅读,但可以将其直接放入代码中并使用代码模糊处理。这样,阅读此第三方许可证将非常困难。

相关或水平副本:。这是关于您自己的许可证,但同样的技术也可以应用于任何其他合理的数据。应用程序自己的许可证是安全的,因为它是在服务器端签名的。但其他部分的一些密钥和许可证只是清晰的字符串。就像im使用第三方控件一样,它需要许可证,并且它存储在dll中。如果你反编译dll,那么你可以窃取我们公司拥有的许可证。在我看来,你应该把它们隐藏起来,看看链接帖子中的各种想法。完美的做法是永远不要在磁盘上实现它们,但这并不总是可能的。使用什么取决于您拥有的功能和自由度。您能给它们传递一条流而不是路径吗?。如果问题是他们的驾照,那么…那是他们的问题,不是你的。如果你想做一些事情,那么你可以隐藏一点自己的DLL再次看到链接后。我认为唯一的方法是保护它是与一个密钥,而不是存储在磁盘上。。。密码差不多就是什么,没错。就像我的情况一样,我仍然需要存储一个普通密钥。我有很多支持核心的项目。其中的每一个都可以存储密钥的一部分,在某些情况下,一个dll可以确保以正确的方式构造完整的密钥。模糊处理似乎是一个很好的选择。模糊处理只会阻止最随意的攻击者-任何有意图和能力在你的代码中到处玩的人都可能有耐心和能力去模糊处理你的密钥等。如果他们可以反向工程一个DLL,他们也可以反向工程去模糊处理代码。。。