-1

我想为自己 [CLI] 创建可移植的 c++ 应用程序,它将存储我的秘密项目信息

但我不确定,我如何在我的程序中存储信息,因为当我使用它时我将在程序中更新的任何内容都将存储在缓冲区中,当我关闭它时,它将被删除并且相同的信息将不可用在任何地方。

我想持久存储信息,最好的方法是什么。[考虑到我的应用程序将是可移植的,即,我可以将它放在我的笔式驱动器中的任何地方,并且我可以从程序中获取我的信息]。

我发现的选项是数据库,但我对数据库有一定的问题:-

1)。sqlite => 如果有人得到我的 sqlite.db 文件,他就会知道我所有的秘密项目。2)。mysql/sql或任何其他数据库=> 它们不可移植,它也需要安装在系统中,我需要每次在系统中导入、导出,无论我必须使用它。

这样的应用程序如何以加密格式存储信息,以便没有人可以轻松读取它。

任何帮助都会很棒。

谢谢

4

2 回答 2

1

如果您希望您的数据保密,那么您必须对其进行加密

你如何保存数据(sqlite、文本文件等)没有任何区别。

也可以看看:

于 2013-07-24T21:03:13.973 回答
1

这不是一个真正的答案,但是“关于你的主题的讨论”太长了,不能作为评论,我宁愿通过写一个“非答案答案”来打破规则(尤其是现在你已经接受了另一个答案)而不是写6条评论。

首先,如果它是用 C++ 编写的,那么它就不是真正可移植的,因为您可以随身携带并将其插入您喜欢的任何地方并访问 if 规范,因为不同的系统将具有不同的操作系统和处理器架构。如果您限制使用 x86 在 Windows 和 Linux 上“插入”,那很好——您只需要构建两个代码副本。但涵盖更多架构——例如能够插入 iPad 或 MacBook 将需要两个以上的软件版本。很快你就会看到很多代码要随身携带(别介意你需要相关的 C++ 编译器和开发环境来构建原始副本)。是的,C++ 是一种可移植语言,但这并不意味着可执行文件将“适用于任何东西”

当然,这里的一种解决方案可能是使用 C++ 以外的其他东西——例如 Java,它只需要目标系统上的 Java VM——它通常已经在客户系统上可用,所以问题不大。但这不适用于例如 ipad。

另一种解决方案是在家中拥有自己的网络服务器,然后从客户站点连接到您的服务器。这样一来,任何信息(除了您实际向客户展示的部分)都不会离开您的房子。通过研究互联网/网站安全性并使用良好的密码来确保它的安全[当然,您甚至可以将其设置为仅在您需要的特定时间可用,而不是 24/7 可用]。当然,如果信息确实是绝密的(核武器、犯罪活动等),您可能不想这样做,因为害怕有人在您不想被访问时访问它。但是,如果它受到登录名和密码的良好保护,它也不太可能“从你的口袋里掉出来”。

加密数据并不难——只需下载相关库,然后从那里开始——crypt++ 就是其中之一。

如果您将其存储在数据库中,您将需要一个自行加密的数据库,或者一种避免“泄漏”明文信息的非常好的方法(例如,将文件存储在 linux 机器上的 /tmp 上),或者更糟,您需要先解密整个数据库,然后才能访问它 - 这意味着至少在理论上,某些东西可能会“破坏”您的整个数据库。

根据的项目的保密程度,您可能还需要考虑输入密码将被您正在使用的计算机读取 - 除非您也带上自己的计算机 [在这种情况下,有一些非常好的“加密我的整个磁盘”软件几乎可以使用]。

此外,如果有人说“我可以将我的记忆棒插入你的计算机并从中运行一些我的记忆棒吗”,我不确定我是否会让那个人这样做。

换句话说,您编写代码本身的技术挑战可能不是您项目中最难破解的难题——尽管有趣且具有挑战性。

于 2013-07-24T21:32:02.100 回答