如何在iOS上使用服务器的公钥txt文件加密数据



我正在开发一个带有java服务器的iOS应用程序。我需要使用 RSA 加密一些数据。RSA 公钥是一个 txt 文件。我想把它整合成一个SecKeyRef。服务器是由前一个家伙开发的。我无权对服务器执行任何操作。

NSData *keyBytes = [[NSData alloc] initWithBase64EncodedString:SERVER_PUBLIC_KEY options:0];
SecCertificateRef mycertificate = SecCertificateCreateWithData(NULL, (__bridge CFDataRef) keyBytes);
SecPolicyRef myPolicy = SecPolicyCreateBasicX509();
SecTrustRef myTrust;
if (mycertificate != NULL){
OSStatus status = SecTrustCreateWithCertificates(mycertificate, myPolicy, &myTrust);
SecTrustResultType trustResult;
if(status == noErr) {
    status = SecTrustEvaluate(myTrust, &trustResult);
}
CFRelease(mycertificate);
CFRelease(myPolicy);
CFRelease(myTrust);
} else {
    NSLog(@"Hell no!");
}
return SecTrustCopyPublicKey(myTrust);

问题是 SecCertificateRef 始终为空。当我运行上面的代码时,应用程序崩溃了!

您需要

将证书从文本格式 PEM(隐私增强邮件,一种用于加密对象的文本格式(转换为二进制格式 DER。基本上PEM是一个页眉,页脚,一些选项(不用于证书(和中间的base 64编码的DER。

由于我没有找到任何在iOS中执行此操作的直接示例,因此将证书从.txt转换为.bin.der.cer可能是最简单的方法。例如,您可以使用openssl来执行此操作:

openssl x509 -in cert.txt -outform der -out cert.der

然后尝试使用问题中的代码阅读它。

最新更新