我想为自己[CLI]创建便携式c ++应用程序,存储我的秘密项目信息。
但是我不确定,我怎么能在我的程序中存储信息,因为我在使用它时将在程序中更新的任何内容都将存储在缓冲区中,当我关闭它时,它将被删除并且相同的信息将会在任何地方都无法使用。
我想持久存储信息,最好的方法是什么。 [考虑到我的应用程序将是便携式的,即我可以在任何地方的笔式驱动器中携带它,我可以从程序中获取我的信息]。
我发现的选项是 Datbase ,但我对数据库有一些问题: -
1)。 sqlite =>如果任何人获得我的sqlite.db文件,他将知道我所有的秘密项目。 2)。 mysql / sql 或任何其他数据库 =>它们不是便携式的,它也需要安装在系统中,我需要导入,每次在系统中导出,无论我在哪里使用它。
此类应用程序如何以加密格式存储信息,以便没有人可以轻松阅读。
任何帮助都会很棒。
由于
答案 0 :(得分:1)
答案 1 :(得分:1)
这不是一个真正的答案,但是太久了“关于你的主题的讨论”以适合作为评论,我宁愿通过写一个“非答案答案”来打破规则(特别是现在你已经已经接受了另一个答案)而不是写6条评论。
首先,如果它是用C ++编写的,那么它就不是真正可移植的,你可以携带它并将它插入任何你喜欢的地方并只访问ifnormation,因为不同的系统会有不同的操作系统和处理器架构。如果限制能够在Windows和Linux上使用x86“插入”,那就很好 - 您只需要构建两个代码副本。但覆盖更多的架构 - 例如能够插入iPad或MacBook将需要两个以上的软件版本。很快你就会看到相当多的代码(更别说你需要相关的C ++编译器和开发环境来构建原始副本)。是的,C ++是一种可移植的语言,但这并不意味着可执行文件将直接“处理任何东西” - 它需要为该架构进行编译。
这里的一个解决方案当然可能是使用C ++以外的东西 - 例如Java,它只需要目标系统上的Java VM - 它通常在客户系统上可用,因此问题较少。但这不适用于例如ipad。
另一种解决方案是在家中拥有自己的网络服务器,并从客户的网站连接到您的服务器。这样,没有任何信息(除了您实际向客户展示的部分)都离开了您的房子。通过学习互联网/网站安全性和使用好的密码来确保安全[当然,你甚至可以设置它,以便它只在你需要它的某些时候可用,并且不能全天候提供]。当然,如果信息真的是绝密的(核武器,犯罪活动等),你可能不想这样做,因为害怕有人在你不希望它被访问时访问它。但如果用登录名和密码保护得很好,它也不太可能“掏出口袋”。
加密数据并不是很难 - 只需下载相关的库,然后从那里开始 - crypt ++就是其中一个库。
如果将它存储在数据库中,您将需要一个自身加密的数据库,或者一种非常好的方法来避免“泄漏”明文信息(例如将文件存储在Linux机器上的/ tmp中),或者更糟糕的是,您需要先解密整个数据库才能访问它 - 这意味着至少在理论上,某些东西可能会“淹没”整个数据库。
根据项目的如何秘密,您可能还需要考虑输入例如密码将由您正在使用的计算机读取 - 除非您自带计算机[和在这种情况下,有一些非常好的“加密我的整个磁盘”软件在那里,几乎可以使用]。
此外,如果有人说“我可以在计算机上插入记忆棒并从中运行我的一些记忆棒”,我不确定是否会让那个人这样做。
换句话说,编写代码本身的技术挑战可能不是您项目中最难解决的问题 - 虽然有趣且具有挑战性。