【发布时间】:2021-04-16 15:34:07
【问题描述】:
我正在与需要加密的设备交换数据。根据说明,我的 iOS 应用会生成一个 RSA 2048 位公钥-私钥对,然后我将公钥发送给设备。
我使用带有openssl 的 macOS 命令行创建了公钥-私钥对(因为我不知道如何让 iOS 做到这一点 - 但这是一个未来的问题):
openssl req -x509 -newkey rsa:2048 -out cert.pem
openssl x509 -in cert.pem -noout -pubkey
我将cert.pem 中的值以及私钥和公钥复制到我的应用程序中:
let certificate = "MIIDej....GWB"
let privateKey = "MIIFhz...Q=="
let publicKey = "MIIBI...AQAB"
当我向设备发送公钥时,设备会很高兴并以 AES-128 格式发回使用我发送的公钥加密的数据。
我在我的头上,但我是试图让这个设备工作的人。
有没有办法使用我在我的应用中设置为Strings 的私钥或证书来解码来自设备的数据?
我一直在查看 Security 和 CryptoKit 文档,它让我头晕目眩。
FWIW,我能够在 cert.pem 文件中的字符串集上使用 SecCertificateCreateWithData 并阅读其一些信息,例如摘要。但我不知道如何应用私钥或使用证书来解码数据。我需要像 Dummies 的悬崖笔记之类的东西。
谢谢。
【问题讨论】:
-
“发回使用公钥加密的 AES-128 数据”是不可能的。 AES 不使用公钥。它使用完全不同的对称密钥。没有单一的标准方法来实现您所描述的内容(有几个官方标准,但许多系统都是临时的)。处理这个问题的正确方法很大程度上取决于服务器实现的确切协议。理想情况下,您有一个文档来描述它。如果没有,那么完整的服务器代码。 (不幸的是,实施临时协议通常需要咨询而不是 Stack Overflow 问题。)
-
谢谢。我刚刚粘贴了我收到的文档中所述的内容。我将尝试找到作者并从那里开始工作。谢谢。
标签: ios swift security openssl