C++:如何加密XML配置文件

C++: How to Encrypt XML Configuration File

本文关键字:加密 XML 配置文件 何加密 C++      更新时间:2023-10-16

我有一个使用xml配置的专有应用程序。目前我使用boost::property_tree来读取xml文件。

我想在一个更公共的系统上部署可执行文件和xml文件,并希望避免任何人,包括该系统的管理员,读取xml。

理想情况下,我想在我的系统上维护明文xml,这样我就可以很容易地手动修改它。然后我会在文件上调用一些加密命令,将其部署在更公共的机器上,并让可执行文件动态解密它。我会使用相同的密钥,并将其硬编码到可执行文件的源代码中。

这种做法合理吗?实现这一点最简单的方法是什么?有更好的方法吗?

由于您已经在使用boost,所以您可以始终对其进行序列化。如果您使用二进制存档,则该文件基本上是不可读的。我想我的后续问题是:你是否也希望它是安全的?或者只是无法阅读?

如果代码在客户端的机器上运行,那么原则上,您永远无法阻止数据变得已知,因为必须在客户端的计算机上。你可以尝试混淆,但最终客户端必须能够读取数据,所以它必须知道

如果你只需在程序中嵌入一个加密密钥,客户端就可以扫描文件并提取密钥。如果你再努力一点,你就可以制作Skype,但即使这样也被解构了。

这完全取决于您保护数据需求的严重性。如果这是绝对的,那么你就不能这样做,但如果你只是想把临时访客拒之门外,你可以试着让它变得更难。。。如果你是认真的,请告诉我们一些细节。

如果你的目标是防止有人随意检查,那么这是一种合理的方法。

如果您必须确保(出于某种奇怪的原因(无法读取配置,这是一项愚蠢的任务,因为程序可以读取它,所以决心这样做的用户也可以这样做。可以通过反汇编程序,也可以简单地从调试器中转储内存。话虽如此,简单、轻量级的加密就足够了,因为即使是最难的加密也会以同样的方式被破坏。

如果你不想让人们阅读,你也可以考虑使用显式的人类可读格式(如xml(是否非常合适。

我也遇到过类似的情况。我使用了一种压缩算法来存储"加密"的文件。zlib可以用于C++。您可以通过命令行和代码轻松地对文件进行加密和解密。为了增加更多的"安全性",你可以用密码对压缩文件进行xor。

这既易于实现又易于使用。当然,如果我的客户是黑客,或者有阅读XML的经济动机,我不会使用这种方法。