有没有办法加密Windows窗体应用程序的配置文件?

时间:2009-12-09 14:31:03

标签: c# .net encryption configuration-files

有没有办法加密Windows窗体应用程序的配置文件?

我在google上找到的所有内容都依赖于“aspnet_regiis.exe”,但我想为桌面应用程序执行此操作?

e.g。 http://msdn.microsoft.com/en-us/library/ms998283.aspx

4 个答案:

答案 0 :(得分:4)

你想要完成什么?

请记住,程序本身需要解密文件,在您的情况下,EXE文件将位于最终用户计算机上。
因此,任何有权访问配置文件的人几乎肯定都会拥有EXE,并且无法阻止他们阅读它。

如果您要存储最终用户的密码并希望阻止其他人阅读,您可以在该文件的路径上调用File.Encrypt。请注意,这在XP Home中不起作用。

您还可以使用System.Security.dll中的ProtectedData类来加密字节数组,以便只有登录用户可以对其进行解密,然后将该字节数组存储在配置文件中。 (这将适用于XP home,AFAIK)

答案 1 :(得分:1)

答案 2 :(得分:0)

回应你的评论:

无法阻止确定的用户。如果用户努力尝试,则可以执行 nothing 以防止他执行其计算机上的应用程序能够执行的操作。你可以把它变得非常困难,但并非不可能。

您到底害怕用户会做什么?

如果您只希望他能够看到某些数据,您可以使用数据库权限或存储过程,或者使用Web服务替换数据库。
如果您不希望他能够复制数据,那么就没有100%的解决方案。

你可以对组件进行模糊处理,但没有混淆器是完全完美的 您可以添加if (Debugger.IsAttached) Environment.FailFast()之类的行,但用户可以使用Reflexil删除它们 您可以使用汇编文件的哈希值作为加密密钥的一部分,但是用户可以使用Reflexil将其替换为硬编码的字节数组。
如果使用Web服务替换数据库,则可以修改Web服务以检测可疑请求,但用户可以在请求之间等待和/或使用不同的计算机。 您可以返回图像而不是数据,但用户可以使用OCR。

简而言之,你可以让它变得非常困难和耗时,但你不能让它变得不可能。

答案 3 :(得分:0)

我根据您的需要应用了可行的解决方案。这是它的链接。

http://www.ardabasoglu.com/1/post/2010/12/encrypting-the-windows-forms-application-settings.html