繁体   English   中英

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

[英]How to encrypt data using server's public key txt file on iOS

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

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

由于我没有找到任何在iOS中执行此操作的直接样本,因此最好将证书从.txt转换为.bin.der.cer 你可以这样做,例如使用openssl

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

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

暂无
暂无

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

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