【问题标题】:MD5 checksums of Android APK files differ. Why?Android APK 文件的 MD5 校验和不同。为什么?
【发布时间】:2012-04-09 16:50:08
【问题描述】:

我注意到,如果我编译一个 Android 应用程序两次,一个接一个地没有更改,两个 APK 文件有两个不同的 MD5 校验和。未签名和已签名的 APK 文件都产生相同的结果。

你可以将它作为 ZIP 文件打开,里面的内容在两个文件中都有相同的 MD5 校验和,所以我很好奇。

还有什么?这两个APK文件有什么不同?

【问题讨论】:

  • 也许 APK 文件存储了编译时的时间戳?我会查看 APK 格式的规范,看看是否存在类似的东西......
  • 听起来很可能。无法找到有关 APK 格式的详细信息。 APK 与 JAR 不同吗?我想它会有一些额外的东西。
  • apk 文件实际上是具有特定文件内容的 zip 文件,就像 .jar 一样

标签: java android md5 apk checksum


【解决方案1】:

ZIP 文件格式将最后修改日期存储在其标题中:http://en.wikipedia.org/wiki/Zip_(file_format)#File_headers

所以 MD5 Sum 不同是因为标头略有不同。

【讨论】:

  • 那么,如果你编译一个 APK,提取内容,创建一个 ZIP,重命名为一个 APK,它会运行吗?今晚必须在我尝试对人类做同样的基本事情之前试试这个。
  • 事实上是的! unzip test.apk; rm test.apk; zip -r test.zip ./*; mv test.{zip,apk}; adb install test.apk 有效。甚至 MD5 总和也不同: 950b9077d8a2a3be45ba207c0c0a2251 test.apk e0ae339a5ecd3080f8359fc06a4c3e29 test.zip.apk
【解决方案2】:

也许“签名”的东西使 MD5 校验和不同?

【讨论】:

  • 已编辑。事实证明,签名和未签名的 APK 都会发生这种情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 2014-06-21
  • 2012-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多