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

时间:2017-03-29 05:10:25

标签: ios encryption rsa

我正在使用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始终为null。当我运行上面的代码时,应用程序崩溃了!

1 个答案:

答案 0 :(得分:0)

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

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

执行此操作
openssl

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