我在分发应用程序时遇到问题。我需要向我的应用程序分发一些数据,为了保留它,我想要一个文件内文件系统,可跨平台移植,加密。
基本上,我想尽可能舒适地在运行时加载这些文件,例如迭代目录。
我可以使用zlib
,但即使是加密档案也可以在没有密码的情况下进行分析:我可以看到拉链内部,但不能提取文件,我想避免使用。
任何提示?
答案 0 :(得分:1)
AFAIK“常规”Zip没有加密文件名的选项。
7-zip(LZMA)有这样一个选项,所以你可能会试着去研究这个方向。不确定是否有可移植的VFS(虚拟文件系统)实现,因为zlib就是这种情况(你可以在这里查看:https://github.com/figment/JA2-1.13/tree/master/Build/ext/VFS)
或者,您可以在应用程序中自己“加密”文件名(即文件名将在存档中加密插入,应用程序将透明地解密它们)。但是7-zip的优点是,如果文件名是加密的,那么在没有提供正确密码的情况下它根本不会列出任何内容。
另一种可能性是使用TrueCrypt文件容器(虽然我不知道任何SDK,但是有完整的TrueCrypt源代码可用,所以我想应该可以通过一些努力将它集成到应用程序中)。