繁体   English   中英

在iOS上使用RSA公钥

[英]Using an RSA public key on iOS

我正在开发一个应用程序,它将从我们的服务器检索用户的公共密钥。 有了它后,我需要使用公钥进行RSA加密。 从服务器获得的公共密钥是Base64编码的。

如何将公钥加载到iOS KeyChain中,以便可以使用它执行RSA加密功能? 证书加载看似微不足道,但原始公钥却并非如此。

不支持此操作,因为它是“错误”方式

正确 ”的方法是使用证书

引用“ Quinn The Eskimo!”

这非常容易。 您无需将证书添加到钥匙串即可处理这种情况。 相反,只需将证书数据(即.cer文件的内容)加载到应用程序中(可以从捆绑包中获取或从网络中获取),然后使用SecCertificateCreateWithData创建证书引用。 从那里可以使用SecTrust对象(SecTrustCreateWithCertificates,SecTrustEvaluate-您可以选择忽略生成的SecTrustResultType和SecTrustCopyPublicKey)来提取公钥引用。 从那里,您可以使用SecKey API(SecKeyEncrypt,SecKeyRawVerify)进行加密和验证。

有关如何创建自签名证书的教程,请参见此处

基本步骤是:

#Make the -----RSA PRIVATE KEY----- file in PEM format
openssl genrsa -out privKey.pem 2048

#Make the -----CERTIFICATE REQUEST-----
openssl req -new -key privKey.pem -out certReq.pem

#Make the actual -----CERTIFICATE-----
openssl x509 -req -days 30 -in certReq.pem -signkey privKey.pem -out certificate.pem

#Make the DER certificate.crt file from the certificate.pem
openssl x509 -outform der -in certificate.pem -out certificate.cer

如果在Mac机器上双击该.cer ,它将提供将其导入到钥匙串中的功能。

资源:

传输公钥的通常方法是在证书中,该证书由某些CA签名以证明它是真实的。

或者,也许您在谈论ssh公钥? 在这种情况下,您将需要具有ssh功能的特殊应用程序才能使用它,这些密钥通常不存储在iOS密钥链中。

我在Apple网站上找到了必要的代码,该代码描述了如何从公钥中剥离ASN.1标头并将其加载到KeyChain中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM