iOS使用security.framework实现RSA加解密

最近研究了下使用security.framework框架进行RSA加解密。从cer证书文件中读取公钥,从pfx证书文件中读取私钥。

1、从cer证书文件中读取公钥

/**
 *  获取公钥
 *
 *  @return
 */
- (SecKeyRef)getPublicKey {
    if (!_publicKey) {
        [self loadPublicKeyFromFile:self.cerFilePath];
    }
    return _publicKey;
}

/**
 *  通过文件路径加载公钥
 *
 *  @param cerFilePath 公钥文件路径
 */
- (void)loadPublicKeyFromFile:(NSString *)cerFilePath {
    if (self.cerFilePath == nil) {
        return;
    }
    NSData *cerData = [[NSData alloc] initWithContentsOfFile:cerFilePath];
    [self loadPublicKeyFromData:cerData];
}

/**
 *  通过NSData加载公钥
 *  (此方法可用于将公钥配置在服务端,以Base64字符串传到移动端来加载)
 *  @param derData 公钥data
 */
- (void)loadPublicKeyFromData:(NSData *)cerData {
    _publicKey = [self getPublicKeyRefrenceFromeData:cerData];
}

#pragma mark - Private Methods

/**
 *  (私有方法)从data获取公钥
 *
 *  @param derData data
 *
 *  @return 公钥
 */
- (SecKeyRef)getPublicKeyRefrenceFromeData:(NSData *)certData {
    SecKeyRef publicKeyRef = NULL;
    CFDataRef myCertData = (__bridge CFDataRef)certData;
    SecCertificateRef cert = SecCertificateCreateWithData(NULL, (CFDataRef)myCertData);
    if (cert == nil) {
        NSLog(@"Can not read certificate from %@", self.cerFilePath);
        return nil;
    }
    SecPolicyRef policy = SecPolicyCreateBasicX509();
    SecCertificateRef certArray[1] = {cert};
    CFArrayRef myCerts = CFArrayCreate(NULL, (void *)certArray,1, NULL);
    SecTrustRef trust;
    OSStatus 
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值