RSA加密如何让字符串NSString如何转成SecKeyRef?

  惊讶看到网上有很多朋友都提出过这个问题,也没有详细的解答,感觉挺坑的,因为我之前也在为这个问题纠结了好久,之后是在技术群有高人相助才解决掉的,废话不多说直接上代码吧!

这是当时后台提供给我的公钥字符串:服务器是java

#defineRSA_PUBLIC_KEY  @"MIICLTCCAZagAwIBAgIEVXVrlDANBgkqhkiG9w0BAQUFADBaMQ0wCwYDVQQGEwRtYWhxMQ0wCwYDVQQIEwRtYWhxMQ0wCwYDVQQHEwRtYWhxMQ0wCwYDVQQKEwRtYWhxMQ0wCwYDVQQLEwRtYWhxMQ0wCwYDVQQDEwRtYWhxMCAXDTE1MDYwODEwMTY1MloYDzIxMTMxMjMxMTAxNjUyWjBaMQ0wCwYDVQQGEwRtYWhxMQ0wCwYDVQQIEwRtYWhxMQ0wCwYDVQQHEwRtYWhxMQ0wCwYDVQQKEwRtYWhxMQ0wCwYDVQQLEwRtYWhxMQ0wCwYDVQQDEwRtYWhxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDzwZjejBFhG+1K5f2frVCJ2UeIUCkwwCg1ip50hYN1yJLCje+Iya3LHEtv/smqMxxuQuMiE7bOUkN/NHFssfGDt99ff98b0xdWXj4x9/WqNWcwteJvcJwgrQpHhfy+wXOI7DDz14b/qJJ6ES42EZ+M/rg7jw9tQ/Z2cWc56gLVGwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAE0wDcQTY+gp7Hd2fWl4Yn/6zOmk6p0z5CBHKzFGw1+aTMcKGli4m13Dq5IIvPQV/CY0cKrcXSvNzTs9OXy4gPPyCnhZ+XavKI9y2jlCDzPPWKcMiMWu1mBfIQOV2hwpRpE1sG8uSPqf2S+nsREwHj95tEdPFHCn2OwLOjLgAMMc"



生气注意:跟后台服务器一定要沟通好,用什么格式 不然会有很多坑等着你去跳,编码格式建议采用(utf-8) 

//获取公钥

static SecKeyRef _public_key=nil;


- (SecKeyRef) getPublicKey{// 从公钥证书文件中获取到公钥的SecKeyRef指针

    if(_public_key == nil){

//由于后台给我的字符串时base过的所以要转回来,没有的请忽视

        NSData *certificateData = [GTMBase64 decodeString:RSA_PUBLIC_KEY];


        SecCertificateRef myCertificate =  SecCertificateCreateWithData(kCFAllocatorDefault, (CFDataRef)certificateData);

        SecPolicyRef myPolicy = SecPolicyCreateBasicX509();

        SecTrustRef myTrust;

        OSStatus status = SecTrustCreateWithCertificates(myCertificate,myPolicy,&myTrust);

        SecTrustResultType trustResult;

        if (status == noErr) {

            status = SecTrustEvaluate(myTrust, &trustResult);

        }

        _public_key = SecTrustCopyPublicKey(myTrust);

        CFRelease(myCertificate);

        CFRelease(myPolicy);

        CFRelease(myTrust);

    }

    return _public_key;

}



  总而言之,当初我也是这么解决的 如果还有问题  请联系我  哈哈!奋斗

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值