0

我有一个 iOS 应用程序,它将所有下载*.pdf的文件存储在其缓存中。有没有办法防止这些数据被提取?加密还是其他?提前致谢。

4

4 回答 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 文件夹,您的应用可以在其中存储内容。一个可以提取,一个是私有的。检查此票证中接受的答案。

访问通过 iTunes 传输的“私人文档”文件夹中的文件

于 2012-04-15T00:31:22.327 回答
0

假设您希望在越狱设备上提取 PDF 文件,最直接的方法将遵循以下几行:

  • 在应用程序首次启动期间生成随机字符串
  • 将随机字符串保存NSUserDefaults在您自己应用程序沙箱内的状态文件中
  • 使用这个随机字符串创建一个使用确定性但难以计算的算法的密钥
  • 使用此密钥,您不会将其存储在任何地方,但始终按需生成,使用 AES 或类似的东西对称地加密您的缓冲区

您可能会发现这里的源代码很有帮助。

于 2012-04-16T20:22:04.880 回答