【问题标题】:iOS 13 AES decrypt with Crypto Swift not working使用 Crypto Swift 进行 iOS 13 AES 解密不起作用
【发布时间】:2020-01-31 02:14:21
【问题描述】:

我有一个使用 AES256 解密进行身份验证的应用程序。为此,我使用 Crypto Swift 库。

直到现在它一直有效,但随着 iOS 13 的推出,解密不起作用。

这是我用来解密的代码:

func aesDecrypt(key: String) throws -> String {
    let data = Serializer.hexaToBytes(self)
    let key = Serializer.hexaToBytes(key)
    let decrypted = try! AES(key: key, blockMode: ECB(), padding: .pkcs7).decrypt(data)
    let decryptedData = Data(decrypted)
    return String(bytes: decryptedData.bytes, encoding: .utf8) ?? "Could not decrypt"
}

String(bytes: decryptedData.bytes, encoding: .utf8) 总是返回 nil...

为什么会这样?我应该怎么做才能让它再次工作?

任何帮助将不胜感激:)

【问题讨论】:

    标签: ios swift encryption aes cryptoswift


    【解决方案1】:

    此类问题的最常见原因是您在某处使用Data.description 来计算十六进制字符串。这从来都不是正确的,但在 iOS 13 之前有可能摆脱它。在 iOS 13 中,格式发生了变化(格式从未承诺保持不变),这破坏了很多依赖它的东西稳定。

    接下来我要检查的是Serializer.hexaToBytes,以确保它正确实施并返回您所期望的。

    鉴于此特定函数的编写方式没有仔细检查错误(并且使用了像 ECB 这样的非常危险的模式),因此相关函数可能同样对错误不小心。检查每个以查看它是否返回您期望的值。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多