C++:如何加密XML配置文件
C++: How to Encrypt XML Configuration File
我有一个使用xml配置的专有应用程序。目前我使用boost::property_tree来读取xml文件。
我想在一个更公共的系统上部署可执行文件和xml文件,并希望避免任何人,包括该系统的管理员,读取xml。
理想情况下,我想在我的系统上维护明文xml,这样我就可以很容易地手动修改它。然后我会在文件上调用一些加密命令,将其部署在更公共的机器上,并让可执行文件动态解密它。我会使用相同的密钥,并将其硬编码到可执行文件的源代码中。
这种做法合理吗?实现这一点最简单的方法是什么?有更好的方法吗?
由于您已经在使用boost
,所以您可以始终对其进行序列化。如果您使用二进制存档,则该文件基本上是不可读的。我想我的后续问题是:你是否也希望它是安全的?或者只是无法阅读?
如果代码在客户端的机器上运行,那么原则上,您永远无法阻止数据变得已知,因为必须在客户端的计算机上。你可以尝试混淆,但最终客户端必须能够读取数据,所以它必须知道
如果你只需在程序中嵌入一个加密密钥,客户端就可以扫描文件并提取密钥。如果你再努力一点,你就可以制作Skype,但即使这样也被解构了。
这完全取决于您保护数据需求的严重性。如果这是绝对的,那么你就不能这样做,但如果你只是想把临时访客拒之门外,你可以试着让它变得更难。。。如果你是认真的,请告诉我们一些细节。
如果你的目标是防止有人随意检查,那么这是一种合理的方法。
如果您必须确保(出于某种奇怪的原因(无法读取配置,这是一项愚蠢的任务,因为程序可以读取它,所以决心这样做的用户也可以这样做。可以通过反汇编程序,也可以简单地从调试器中转储内存。话虽如此,简单、轻量级的加密就足够了,因为即使是最难的加密也会以同样的方式被破坏。
如果你不想让人们阅读,你也可以考虑使用显式的人类可读格式(如xml(是否非常合适。
我也遇到过类似的情况。我使用了一种压缩算法来存储"加密"的文件。zlib可以用于C++。您可以通过命令行和代码轻松地对文件进行加密和解密。为了增加更多的"安全性",你可以用密码对压缩文件进行xor。
这既易于实现又易于使用。当然,如果我的客户是黑客,或者有阅读XML的经济动机,我不会使用这种方法。
- Cppcheck生成xml转储文件
- AES加密到解密未正确输出
- 如何在pugixml中获取节点的内部XML
- 如何使用tinyxml2从XML加载父实体和子实体
- boost xml parsingl将xml的路径作为变量发送
- C++RapidXml-使用first_node()遍历以修改XML文件中节点的值
- 使用 Tinyxml 在 xml 中添加一个子子项
- 加密++验证大文件签名
- 通过 Openssl 命令行加密,通过 c++ 解密
- 增强基于 XML class_id的反序列化
- 如何在加密++中将两个源组合成新的源
- 在TFHE(完全快速同态加密)上执行除法
- 使用不同算法的 PKCS1v15 填充进行加密 ++ 签名
- 在 c++ 中使用 vtd-xml 时,如何摆脱 EOFException?
- 防止在C++中选择错误文件时提升 xml 解析器崩溃
- 加密在 Windows、C++ 和 Java 中传输中的数据
- c++ 读取 xml 文件的内容
- 删除 XML 文件中的子节点C++
- C++RSA使用XML密钥进行加密/解密
- C++:如何加密XML配置文件