我的应用程序是连接到数据库服务器的客户端桌面应用程序。该应用程序是一个文档管理系统,允许用户将其文件(如.pdf .xlsx等)存储在数据库中,并跟踪文档的所有版本。用户可以“签入”并“签出”文档。当用户签出文件时,它将从数据库中下载并复制到用户的硬盘驱动器中。然后,用户访问该文件,编辑并检入数据库。在数据库内部,文件以压缩,加密和base64编码的形式存储在文本字段中。
我的目标是确保当文件被复制到用户的硬盘驱动器时,它被加密,但仍然允许用户轻松访问它。可视化我想要的最好的方法是考虑TrueCrypt的工作原理 - 它允许用户创建一个加密的二进制文件,然后可以将其作为驱动器安装。因此,例如在Windows上,将为卷分配驱动器号,用户可以通过“我的电脑”访问这些文件。
我的应用使用Botan库进行加密。
是否有可能实现与Qt类似的东西?如果是这样,怎么样?如果没有,你推荐什么?
非常感谢。
答案 0 :(得分:2)
嗯,我认为你所谈论的是非常合理的,但需要一些核心设计'在继续介绍技术细节和可能的解决方案之前的想法。
据我所知,事情看起来像那样:
< ---> < ----> < ----> <第三方应用>
然后文件从文件系统进入数据库,使用某种算法对其进行加密。 一旦文件从db返回到文件系统,它应该可用于第三方软件进行修改......
那就是主要观点......你需要在硬盘上进行加密吗?在进一步实施之前,我认为您应该指定您要实现的目标。只要第三方软件可以访问未加密的数据,它实际上意味着安装在操作系统上的所有其他软件都具有相同级别的访问权限。 (在写这篇文章的时候,我正在考虑一些奇怪的配置,例如开放式办公室可以由你的应用程序在某个用户(linux)下运行,而存储文件的文件夹只能由所有者访问进行读/写,但我认为它可能走得太远了.. ..无论如何..问题是 - 你想要防止什么...我相信只有你能想到的建议情况下,当硬盘被物理拔掉时,它才能访问数据。然后根据操作系统,我建议使用任何标准的解决方案,如TrueCrypt,只需使用' mount' Linux上的系统调用或Win32上的API(大多数解决方案都有可用的API或命令行实用程序,您可以从您的应用程序运行)。这很容易实现。