的plist(属性列表)文件的md5sum当编译成iPhone应用程序的变化

StackOverflow https://stackoverflow.com/questions/1142995

  •  16-09-2019
  •  | 
  •  

我,包括我的iPhone应用程序plist文件中。它是二进制格式(使用plutil从XML转换为二进制)。我希望在运行时在其上运行的MD5校验和(或SHA-1),以证实其内容的期望是什么。不幸的是,我总是得到一个校验和,这比我原先包括不同。在假设我是计算MD5校验和错误的一个小时后,我决定运行测试并确认字节确实是相同的。他们不是。文件的大小保持不变,但在字节30开始,并在整个文件中(除了最后32个字节),该文件的内容是完全不同的。有谁知道,如果属性列表文件都包含在一个iPhone应用程序之前签署或以其它方式“编译”到一个不同的二进制格式?如果是这样,你能在过程中提供的任何信息?

提前感谢!

有帮助吗?

解决方案

默认情况下,而不是仅仅做一个直副本,Xcode的建设目标时,使用一个小的脚本来处理和复制的plist文件。如果弹出信息窗口Xcode中的目标,并选择“规则”选项卡,你会看到处理text.plist源文件,它使用了所谓的CopyPlistFile自己的工具。它做一些基本检查,以确保plist中是有效的,可以选择将其转换为不同的格式,但它似乎没有转换默认情况下进行的。

我不知道这是什么导致你的plist文件的变化,但如果你愿意,你可以得到plist文件本身的信息在你的项目,并从“text.plist”更改文件类型,只是“文本”。这应该引起的Xcode把它当作一个纯文本文件,而不是属性列表文件,只是做的,而不是通过CopyPlistFile工具运行它直副本。

其他提示

我会弹出,为什么在这个问题上叠加。我不知道回答你的问题,但我很好奇,为什么你在花费时间。

由于应用程序的数字签名,你为什么关心的plist的完整性?如果有人修改了它,那么应用程序将无法安装,因为数字签名将不再有效。

另外一个原因可能是你所关心的应用程序被黑客攻击。完全合理的,但如果有人能破解应用程序,那么他们也可以修改plist中,并改变校验你的代码,以便它仍然会运行。真的没有办法保证内容的完整性,而不真正从第三方(例如您自己的服务器)

得到它
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top