我有一个 iOS 应用程序,它将所有下载*.pdf
的文件存储在其缓存中。有没有办法防止这些数据被提取?加密还是其他?提前致谢。
问问题
352 次
4 回答
2
加密文件的方法有很多,我相信每个人都会对最好的方法有意见。
在我最近从事的一个项目中,我们一直在使用 CommonCrypto (https://github.com/AlanQuatermain/aqtoolkit)。只需获取任何 NSData,对其进行加密,然后将其保存到文件中,反之亦然。你甚至可以通过继承 NSValueTransformer 来编写一个简单的 Transformer,它将所有的加密抽象到一个地方,你再也不用担心它了。
于 2012-04-12T13:22:18.537 回答
1
您可以使用密码保护 PDF 文件。我假设您不是在应用程序内而是在外部创建 PDF 文件。例如,您可以在 Mac OS X 中使用Preview.app使用密码保护现有 PDF 文件(点击 Cmd-P,然后在打印菜单中选择 PDF,您可以在其中设置安全选项。或者更简单:在菜单中选择出口...)。
在 iOS 中,您可以像这样打开 PDF 文件:
CGPDFDocumentRef documentRef = CGPDFDocumentCreateWithURL((__bridge CFURLRef)[NSURL fileURLWithPath:filePath]);
if (!CGPDFDocumentIsUnlocked(documentRef))
CGPDFDocumentUnlockWithPassword(documentRef, password);
...
于 2012-04-12T21:49:37.547 回答
0
实际上有 2 个 Documents 文件夹,您的应用可以在其中存储内容。一个可以提取,一个是私有的。检查此票证中接受的答案。
于 2012-04-15T00:31:22.327 回答
0
假设您希望在越狱设备上提取 PDF 文件,最直接的方法将遵循以下几行:
- 在应用程序首次启动期间生成随机字符串
- 将随机字符串保存
NSUserDefaults
在您自己应用程序沙箱内的状态文件中 - 使用这个随机字符串创建一个使用确定性但难以计算的算法的密钥
- 使用此密钥,您不会将其存储在任何地方,但始终按需生成,使用 AES 或类似的东西对称地加密您的缓冲区
您可能会发现这里的源代码很有帮助。
于 2012-04-16T20:22:04.880 回答