傻瓜式加密解密文本文件?

时间:2014-08-09 10:42:02

标签: c# c++ .net wpf encryption

请考虑以下情况:

  1. 我在网上加密后放置一个文本文件 用户下载。
  2. 每个用户在PC上都有一个WPF应用程序,它在只读编辑器中显示文件中的文本(在删除之后)。
  3. 目的是没有那个没有WPF应用程序的人可以查看该文件的内容。
  4. 问题在于解密文件所需的密钥。 WPF(C#)应用程序可以反编译以提取密钥。如果在C ++ DLL中嵌入密钥并在C#中调用它(将密钥传递给解密算法),它再次类似于以前的情况。我能想到的其他解决方案也有类似的风险。

    在这种情况下,请你指导我吗?问题是每次用户运行应用程序时都无法从Web服务器获取密钥。它必须存储在用户的PC或应用程序中。

    感谢大家的时间和耐心。

    修改

    我正在开发一个应用程序,该应用程序读取一个文件,该文件的约束条件是该文件只能在我的应用程序中打开。因此,我想到的第一个解决方案是加密文件并将密钥保存在应用程序或各个地方并动态组合。这些都是有缺陷的方法。请记住,应用程序必须脱机工作。这种方法更容易但不安全,因为一旦文件被解密成纯文本,就可以轻松共享。目的是为拥有此应用程序的人提供内容。

    另一种方法是拥有专有格式,例如受DRM保护的LIT由Microsoft提供。可以在Microsoft Reader中读取具有此格式的文件。这似乎是一项更大的任务。我需要帮助才能知道它与以前的方法相比是否安全,并且会保护文件中受版权保护的信息,或者可以像我第一次提到的方法一样轻松地破解(使用任何方法)。此外,用C ++编写这个应用程序是一个好主意,因为它编译成机器代码,不能轻易转换成源代码。谢谢。

1 个答案:

答案 0 :(得分:1)

这个问题只有两个解决方案(即便如此也不是100%安全)。两者都涉及"不将密钥存储在您的应用程序中#34;。

  1. 让用户输入密钥。
  2. 从某处的服务器获取密钥。
  3. 确保服务器也使用例如https进行加密,或者有人可以通过扫描网络数据包对其进行解密。

    无论您在计算机上本地存储密钥的任何解决方案都可以通过可访问可执行文件(或DLL或其他)的omeone找到,实际上没有办法解决这个问题。你可以通过隐藏"使它变得更复杂。在sevreal地方的关键,并进行复杂的计算,但"默默无闻的安全"只会阻止那些对找到解决方案不耐烦的人。

    即使您没有存储密钥,运行应用程序的人也可以在调试器中停止并在解密发生时检查密钥。实际上,没有办法通过隐藏密钥来使加密和解密(至少在软件中)完全无法破解。 - 密钥必须在解密期间存在,因此可以找到它。

    然后归结为"你愿意花费多少努力来使这样的过程变得更加困难"记住,如果联邦调查局,国家安全局,GCHQ,克格勃或其他一些人投入100无论你想出什么,最好的人都会打破你的代码。 [事实上,他们可以通过简单地在许多机器上运行来打破它,只是强行打开它,因为这些组织可以使用大型集群,所以如果它打破很重要,那将是一个资源这些组织]。如果你想保护自己不受约翰史密斯的影响。谁使用该应用程序,并且不具备特定的计算机知识,那么将解密密钥存储在应用程序本身就完全没问题了。在这些职位之间,你有一些人,作为一种爱好,打破了程序中的代码。他们将在100名政府机构工作人员的团队面前放弃,但显然比“约翰史密斯”更加努力和技巧。