3

我一直在把头发拉出来。我在我的 iOS 应用程序中使用 CommonCrypto 来加密数据,然后我将这些数据发送到解密它的 Windows 服务器。这在我的 iPhone 5 (iOS 6)、iPad 3 (iOS 6) 和模拟器 (Mac OS X 10.8.2) 上的 Xcode (最新版本) 开发环境中完美运行。

我用来加密的非常简单的代码是这样的:

    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
                                      keyPtr, kCCKeySizeAES128, // oorspronkelijk 256
                                      keyPtr /* initialization vector (optional) */,
                                      [self bytes], dataLength, /* input */
                                      buffer, bufferSize, /* output */
                                      &numBytesEncrypted);

同样,当我从 Xcode 调试时,这很有效。

但是当我构建 IPA(存档文件,即 Apple 为 App Store 审查的文件)并将加密数据发送到 Windows 服务器时,服务器报告“填充无效”。两者之间没有代码差异!

我怀疑 CommonCrypto 在这两种构建模式中有些不同,但我不知道那会是什么。我尝试从 Apple 的开源站点获取 CommonCrypto 库并构建它,目的是将其编译到我的代码中,但我未能成功构建它。

有没有其他人遇到过这个问题?我在这里缺少一些编译器选项吗?

* 编辑 *

我找到了导致问题的标志:如果我将“优化级别”设置为“最小/最快”、“最快”、“更快”或“最快” - 它会失败。但是如果我将它设置为“无”,它就可以工作。所以优化中的某些东西导致加密被破坏!

4

0 回答 0