AES 加密在 iOS 13.4 上无法正常工作

AES encryption not working properly on iOS 13.4

我的 iOS 应用程序使用 AES 加密创建了一个密钥,并将其与所有 APIs 一起发送,它正在服务器端解密,现在在 [=36= 更新之后] 13.4 从设备(不是模拟器)创建的密钥不正确,服务器抛出以下错误: "Padding is invalid and cannot be removed."

它在 13.4 OS 版本以下的设备中运行完美,我们使用 CommonCrypto 来加密密钥到此结束,详情如下:

  let ivData = "passpharse".data(using:String.Encoding.utf8)!
  let cryptLength  = size_t(data.count + kCCBlockSizeAES128)
  var cryptData = Data(count:cryptLength
  let keyLength = size_t(kCCKeySizeAES128)
  let options   = CCOptions(kCCOptionPKCS7Padding)
  var numBytesEncrypted :size_t = 0

令人惊讶的是,尽管使用相同的方法生成密钥,但某些 API 调用正确生成了密钥。

iOS - OS 小于 13.4 的用户没有遇到任何问题,如果有人有遇到同样情况请指导

提前致谢。

经过大量研究,我让它适用于所有版本。 如果在上面的代码中“passphrase”短于 16 个字节,它将使用末尾后面的任何 in-memory。 CommonCrypto API 的不当使用似乎是这里的问题所在。真的不知道为什么以前会这样,但也许我们对内存布局很幸运,但在按预期运行之前需要解决上述问题。