gpt4 book ai didi

ios - Swift 3 中 SecKeyCreateEncryptedData 和 SecKeyEncrypt 的区别

转载 作者:行者123 更新时间:2023-12-01 16:14:20 35 4
gpt4 key购买 nike

当尝试使用 SecKeyCreateEncryptedData 加密纯数据 block 时,它使用指定的算法加密纯数据并且工作正常。我用于加密的代码片段是

SecKeyCreateEncryptedData(publicKey.underlying,SecKeyAlgorithm.eciesEncryptionSt
andardX963SHA1AESGCM,cdata!, &error)

但是当我尝试使用 SecKeyEncrypt 进行相同的加密时,它失败并返回值 (-50)。用于我的加密的代码片段是

SecKeyEncrypt(publicKey.underlying as SecKey, .PKCS1, digestBytes, 
newdata.length, &signatureBytes, &signatureLength)

而且我也无法得到错误代码-50的错误描述。

最佳答案

这是这两个函数之间的一般区别,不仅限于 Swift。

SecKeyCreateEncryptedData 函数旨在替换 SecKeyEncrypt 的用法,因为它仅适用于 iOS 10+,Apple 官方指南正在使用它。虽然这两个函数都以SecKey为参数,但是获取实例的方式也不同。

如果您的 publicKey 对于 SecKeyCreateEncryptedData 工作正常,那么相同的 publicKey 很可能不适用于 SecKeyEncrypt函数。

要为SecKeyEncrypt 函数正确生成SecKey,您需要

  1. 使用SecCertificateCreateWithData 获取SecCertificate。请注意,证书应为.der格式。
  2. 根据您刚刚创建的 SecCertificate 创建并评估 SecTrust
  3. SecTrust中获取SecKey

您可以在此处找到更多详细信息 How can I get SecKeyRef from DER/PEM file .

关于ios - Swift 3 中 SecKeyCreateEncryptedData 和 SecKeyEncrypt 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49332756/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com