我有一个使用xml配置的专有应用程序。目前我使用boost :: property_tree来读取xml文件。
我想在更公开的系统上部署可执行文件和xml文件,并希望避免任何人(包括该系统的管理员)阅读xml。
理想情况下,我想在我的系统上维护明文xml,以便我可以轻松地手动修改它。然后我会在文件上调用一些encrypt命令,将其部署在更公共的机器上并让可执行文件动态解密。我使用相同的密钥,只需将其硬编码到可执行文件的源代码中。
这是一种合理的方法吗?实现这个的最简单方法是什么?还有更好的方法吗?
答案 0 :(得分:2)
由于您已经在使用boost
,因此您可以随时serialize it。如果使用二进制存档,则该文件基本上是不可读的。我想我的后续问题是:你还希望它是安全吗?或者只是不可读?
答案 1 :(得分:1)
如果代码在客户端的计算机上运行,那么原则上您永远不会阻止数据被识别,因为它必须在客户端的计算机上。您可以尝试进行模糊处理,但最终客户端必须能够读取数据,因此必须知道它。
如果您只需在程序中嵌入加密密钥,客户端就可以扫描文件并提取密钥。如果你的工作有点困难,你就可以制作Skype,但即便如此,也已经解构了。
这一切都取决于您需要保护数据的严重性。如果它是绝对的,那么你不能这样做,但如果你只是想让不经常的访客离开,你可以试着让它变得更难......如果你认真对待它,请告诉我们一些细节。
答案 2 :(得分:1)
如果您的目标是阻止某人随意检查,那么这是一种合理的方法。
如果你必须确保(由于一些奇怪的原因)无法读取配置,这是一个愚蠢的错误,因为程序可以读取它,因此确定这样做的用户也可以这样做。通过反汇编程序,或者只是通过调试器进行内存转储。话虽如此,简单,轻量级的加密就足够了,因为即使是最难加密的加密也会以同样的方式被破解。
如果您不希望人们阅读它,您是否也可以考虑使用明确的人类可读格式(如xml)是否适合。
答案 3 :(得分:1)
我有一个非常相似的案例。我使用压缩算法来存储文件'encrypted'。 zlib可用于C ++。您可以从命令行和代码轻松加密和解密文件。要添加更多“安全性”,您可以使用密码xor压缩文件。
这既简单易用又易于使用。当然,如果我的客户是黑客,或者有经济激励来阅读XML,我将不会使用这种方法。