【问题标题】:How to encrypt folders and files for a wpf application如何为 wpf 应用程序加密文件夹和文件
【发布时间】:2012-11-07 14:16:30
【问题描述】:

我正在开发一个负责显示图片库的 WPF 项目。 图片存储在文件夹中。 我想知道是否有办法加密文件夹和图片以保护文件(用户不应该看到文件),但我想保留通过代码浏览这些文件夹以构建我的库的可能性。

【问题讨论】:

  • 您想要多强的保护? Zip 文件提供目录支持。无论如何,您需要在应用程序中提供密钥才能使其正常工作,因此它永远不会万无一失。
  • 什么类型的项目?什么文件夹?这是一个桌面应用程序,其中文件存储在本地系统上,但您不希望用户能够从资源管理器中打开文件?
  • 您的代码可以做的任何事情,用户也可以做。你所能做的就是让它变得更难。
  • 保护必须很强,因为文件是受版权保护的。用户应该不能复制这些文件。这是一个桌面应用程序。
  • 您所要求的(针对黑客的强大保护)似乎是不可能的。为了使加密文件在您的应用程序中可用,您必须在应用程序中包含解密密钥,这违背了加密的目的,因为从您的软件中对密钥进行逆向工程的任何人都可以自己解密文件。

标签: c# image xaml encryption directory


【解决方案1】:

我能想到的最好方法是将文件和文件夹存储在带有密码的 Zip 存档中。 Windows 原生支持 Zip 文件。支持 zip 文件的选项有很多,包括 framework optionsoutboard libraries

请注意,这并不能真正保护文件免受用户篡改;它只是将它们隐藏在不经意的观察者面前。此外,可能会有速度惩罚;您应该使用尽可能快的压缩选项。

【讨论】:

    【解决方案2】:

    您可以使用 Zip 存档和另一种方式: 您可以将另一个项目项目(库)添加到您的主解决方案中,将您的图像文件夹添加到您的应用程序中并将其build action 属性设置为resource,这样,您的图像将存储在 Dll 中,并且可以从 Dll 访问它们.我在点击此链接之前尝试过:

    get-folder-address-in-dll

    【讨论】:

    • 这似乎是个好主意。我要试试。但我不知道它是否能保护我的文件免受逆向工程师的攻击。
    • @Ben:在将图像放入 Dll 之前,您还可以将图像转换为二进制(例如:获取 4 个第一个图像位并将它们与 const 数字相加或为自己制作一个公式)通过这种方式,如果有人打开您的 Dll 无法访问它们,并且再次显示您的图像,请反转您显示图像的公式。我尝试一下。
    • 这似乎是个好主意,我会尝试。您发布的链接很有帮助,但无法逐个文件夹和逐个文件浏览文件夹。只有一个Uri列表很不方便(DirectoryInfo不能用这种Uri实例化)。
    • 如何通过代码将我的文件添加到我的 DLL 中? (修改后)
    • 您不需要代码,只需将您的图像添加到 dll 项目并设置构建操作以嵌入资源
    猜你喜欢
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    相关资源
    最近更新 更多