在 Cocoa / Objective C 中保护 xml plist

Posted

技术标签:

【中文标题】在 Cocoa / Objective C 中保护 xml plist【英文标题】:Securing xml plists in Cocoa / Objective C 【发布时间】:2010-11-30 17:14:50 【问题描述】:

我正在编写一个应用程序,它在启动时从捆绑包中的 am xml plist 中读取信息。 plist 中的信息是经过多日的工作整理而成的,我想确保它在分发后不会被另一方轻易地从 app bundle 中提取出来。有什么方法可以保护或加密包含在您的应用程序包中的 xml plist?

任何帮助将不胜感激。

【问题讨论】:

这是一个小细节,但如果您嵌入的 plist 不适合人类消费,请使用更有效的二进制 plist 格式。您可以使用 plutil -convert binary1 file.plist 进行转换。 【参考方案1】:

plist 中没有内置加密功能。许多人将压缩视为加密。

这就是我要做的,

    制作一个加密密钥。 编写一个小程序,使用SecKeyEncrypt()将plist加密成二进制文件。 将二进制文件放入包中。 在应用程序中,将密钥隐藏在某处。例如,将它们分段存储,这样就不容易从垃圾场中找到。 当您启动应用程序时,从 bundle 中读取二进制文件,使用SecKeyDecrypt() 使用密钥对其进行解密并将明文存储在内存中。 明文是 plist 并从内存中加载 plist。

这仍然被认为是令人困惑的,因为您的捆绑包中提供了密钥,但它足以阻止大多数临时黑客。

【讨论】:

谢谢,这很有帮助。 至于加密部分,请查看这个 SO 问题以获取想法:***.com/questions/1417893/… @ZZ Coder 你有任何示例来证明这一点吗?

以上是关于在 Cocoa / Objective C 中保护 xml plist的主要内容,如果未能解决你的问题,请参考以下文章

什么是 Cocoa,和 Objective-C 有什么关系

Objective C - 创建 PDF (Mac OSX / Cocoa)

如何使用Cocoa启动URL(Objective C)-macosx.com

Cocoa/Objective-C 和分布式对象的例子?

Objective C - 创建文本文件以在 Cocoa 中逐行读取和写入

Cocoa/Objective-C - 带有文本输入的子窗口,而主窗口没有变为非活动状态