精华内容
下载资源
问答
  • -(SecKeyRef)addPublicKey:(NSString *)key{ NSRange spos = [key rangeOfString:@"-----BEGIN PUBLIC KEY-----"]; NSRange epos = [key rangeOfString:@"-----END PUBLIC KEY-----"]; if...

    -(SecKeyRef)addPublicKey:(NSString *)key{
        NSRange spos = [key rangeOfString:@"-----BEGIN PUBLIC KEY-----"];
        NSRange epos = [key rangeOfString:@"-----END PUBLIC KEY-----"];
        if(spos.location != NSNotFound && epos.location != NSNotFound){
            NSUInteger s = spos.location + spos.length;
            NSUInteger e = epos.location;
            NSRange range = NSMakeRange(s, e-s);
            key = [key substringWithRange:range];
        }
        key = [key stringByReplacingOccurrencesOfString:@"\r" withString:@""];
        key = [key stringByReplacingOccurrencesOfString:@"\n" withString:@""];
        key = [key stringByReplacingOccurrencesOfString:@"\t" withString:@""];
        key = [key stringByReplacingOccurrencesOfString:@" "  withString:@""];
        
        // This will be base64 encoded, decode it.
        NSData *data = base64_decode(key);
        data = [self stripPublicKeyHeader:data];
        if(!data){
            return nil;
        }
        
        //a tag to read/write keychain storage
        NSString *tag = @"RSAUtil_PubKey";
        NSData *d_tag = [NSData dataWithBytes:[tag UTF8String] length:[tag length]];
        
        // Delete any old lingering key with the same tag
        NSMutableDictionary *publicKey = [[NSMutableDictionary alloc] init];
        [publicKey setObject:(__bridge id) kSecClassKey forKey:(__bridge id)kSecClass];
        [publicKey setObject:(__bridge id) kSecAttrKeyTypeRSA forKey:(__bridge id)kSecAttrKeyType];
        [publicKey setObject:d_tag forKey:(__bridge id)kSecAttrApplicationTag];
        SecItemDelete((__bridge CFDictionaryRef)publicKey);
        
        // Add persistent version of the key to system keychain
        [publicKey setObject:data forKey:(__bridge id)kSecValueData];
        [publicKey setObject:(__bridge id) kSecAttrKeyClassPublic forKey:(__bridge id)
         kSecAttrKeyClass];
        [publicKey setObject:[NSNumber numberWithBool:YES] forKey:(__bridge id)
         kSecReturnPersistentRef];
        
        CFTypeRef persistKey = nil;
        OSStatus status = SecItemAdd((__bridge CFDictionaryRef)publicKey, &persistKey);
        if (persistKey != nil){
            CFRelease(persistKey);
        }
        if ((status != noErr) && (status != errSecDuplicateItem)) {
            return nil;
        }
        
        [publicKey removeObjectForKey:(__bridge id)kSecValueData];
        [publicKey removeObjectForKey:(__bridge id)kSecReturnPersistentRef];
        [publicKey setObject:[NSNumber numberWithBool:YES] forKey:(__bridge id)kSecReturnRef];
        [publicKey setObject:(__bridge id) kSecAttrKeyTypeRSA forKey:(__bridge id)kSecAttrKeyType];
        
        // Now fetch the SecKeyRef version of the key
        SecKeyRef keyRef = nil;
        status = SecItemCopyMatching((__bridge CFDictionaryRef)publicKey, (CFTypeRef *)&keyRef);
        if(status != noErr){
            return nil;
        }
        return keyRef;
    }

    - (NSData *)stripPublicKeyHeader:(NSData *)d_key{
        // Skip ASN.1 public key header
        if (d_key == nil) return(nil);
        
        unsigned long len = [d_key length];
        if (!len) return(nil);
        
        unsigned char *c_key = (unsigned char *)[d_key bytes];
        unsigned int  idx     = 0;
        
        if (c_key[idx++] != 0x30) return(nil);
        
        if (c_key[idx] > 0x80) idx += c_key[idx] - 0x80 + 1;
        else idx++;
        
        // PKCS #1 rsaEncryption szOID_RSA_RSA
        static unsigned char seqiod[] =
        { 0x30,   0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
            0x01, 0x05, 0x00 };
        if (memcmp(&c_key[idx], seqiod, 15)) return(nil);
        
        idx += 15;
        
        if (c_key[idx++] != 0x03) return(nil);
        
        if (c_key[idx] > 0x80) idx += c_key[idx] - 0x80 + 1;
        else idx++;
        
        if (c_key[idx++] != '\0') return(nil);
        
        // Now make a new NSData from this buffer
        return([NSData dataWithBytes:&c_key[idx] length:len - idx]);
    }

    static NSString *base64_encode_data(NSData *data){
        data = [data base64EncodedDataWithOptions:0];
        NSString *ret = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        return ret;
    }

    static NSData *base64_decode(NSString *str){
        NSData *data = [[NSData alloc] initWithBase64EncodedString:str options:NSDataBase64DecodingIgnoreUnknownCharacters];
        return data;
    }

    + (NSString*)base64EncodeData:(NSData *)data {
        data = [data base64EncodedDataWithOptions:0];
        NSString *ret = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        return ret;
    }

    + (NSData*)base64Dncode:(NSString *)str {
        NSData *data = [[NSData alloc] initWithBase64EncodedString:str options:NSDataBase64DecodingIgnoreUnknownCharacters];
        return data;
    }

     

    PS:这个方法在RSA中是有的,所以不理解的话,需要再去查查。

    展开全文
  • -(SecKeyRef)getPrivateKeyRef{ Byte byte[]={0xf3,0xfc,0xcc,0x0d,0x00,0xd8,0x03,0x19,0x54,0xf9,0x08,0x64,0xd4,0x3c,0x24,0x7f,0x4b,0xf5,0xf0,0x66,0x5c,0x6b,0x50,0xcc,0x17,0x74,0x9a,0x27,0xd1,0xcf,0x76...
  • RSA加密如何让字符串NSString如何转成SecKeyRef? 注意:此方法只适用于服务器生成的der格式的公钥字符串,dem格式的会在SecTrustCreateWithCertificates函数处崩溃。 看到网上有很多朋友都提出过这个...

    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;

    }

    转载于:https://www.cnblogs.com/ruixin-jia/p/9405686.html

    展开全文
  • iOS 生成 SecKeyRef 的正规方式 前言 针对 macOS 的开发,多年以前苹果就弃用了 OpenSSL,转而推荐自有框架 Security 和 CommonCrypto。当然你仍然可以使用 OpenSSL,比如说在 iOS 上使用开源库OpenSSL for iPhone...

    iOS 生成 SecKeyRef 的正规方式

    前言

    针对 macOS 的开发,多年以前苹果就弃用了 OpenSSL,转而推荐自有框架 Security 和 CommonCrypto。当然你仍然可以使用 OpenSSL,比如说在 iOS 上使用开源库 OpenSSL for iPhone

    苹果有一套自己的方式来生成各种密钥(对称加密、非对称加密),你可以查看苹果的 sample code CryptoExercise,来了解如何在苹果自有平台(macOS、iOS、 tvOS 等等)上使用这一套机制。

    OpenSSL 是被广泛使用的生成公私钥对以及各类证书等文件的方式,比如生成 PEM 或者 DER 后缀的文件(前者是 Base64 编码,或者则是 DER 编码的内容,如何包含的只是公钥或者私钥的话,本质上就没有区别)。但是在 iOS 并没有原生支持读取只包含公钥或者私钥的方法(iOS 10 之后可以使用 SecKeyCreateWithData 来生成) 。

    在 iOS 上, SecKeyRef 对象是一个密码学角度的抽象的密钥对象(也就是说它可以代表一个公钥、私钥或者某种对称加密的密钥)。所以如何生成这样一个对象就显得格外重要,因为无论是加解密还是签名,都会需要这个对象

    原生生成公私钥对象的一种通用方式 (仅限 iOS 10 及以上)

    苹果从 iOS 10 开始支持直接从公私钥数据来生成 SecKeyRef。步骤如下:

    1. 对于 PEM 编码的数据,需要先将多余的信息给剔除,主要是头尾两行 (begin 和 end )以及去掉换行。
    2. 构造一个 attribute 属性字典,指定密钥算法(比如 RSA),密钥格式(公钥还是私钥),还有密钥大小
    3. 调用 SecKeyCreateWithData,返回一个 SecKeyRef

    下面是具体代码:

    SecKeyRef getPrivateKeyFromPem() {
        // 下面是对于 PEM 格式的密钥文件的密钥多余信息的处理,通常 DER 不需要这一步
        NSString *key = @"PEM 格式的密钥文件";
        NSRange spos;
        NSRange epos;
        spos = [key rangeOfString:@"-----BEGIN RSA PRIVATE KEY-----"];
        if(spos.length > 0){
            epos = [key rangeOfString:@"-----END RSA PRIVATE KEY-----"];
        }else{
            spos = [key rangeOfString:@"-----BEGIN PRIVATE KEY-----"];
            epos = [key rangeOfString:@"-----END PRIVATE KEY-----"];
        }
        if(spos.location != NSNotFound && epos.location != NSNotFound){
            NSUInteger s = spos.location + spos.length;
            NSUInteger e = epos.location;
            NSRange range = NSMakeRange(s, e-s);
            key = [key substringWithRange:range];
        }
        key = [key stringByReplacingOccurrencesOfString:@"\r" withString:@""];
        key = [key stringByReplacingOccurrencesOfString:@"\n" withString:@""];
        key = [key stringByReplacingOccurrencesOfString:@"\t" withString:@""];
        key = [key stringByReplacingOccurrencesOfString:@" "  withString:@""];
        
        // This will be base64 encoded, decode it.
        NSData *data = base64_decode(key);
        if(!data){
            return nil;
        }
        
        // 设置属性字典
        NSMutableDictionary *options = [NSMutableDictionary dictionary];
        options[(__bridge id)kSecAttrKeyType] = (__bridge id) kSecAttrKeyTypeRSA;
        options[(__bridge id)kSecAttrKeyClass] = (__bridge id) kSecAttrKeyClassPrivate;
        NSNumber *size = @2048;
        options[(__bridge id)kSecAttrKeySizeInBits] = size;
        NSError *error = nil;
        CFErrorRef ee = (__bridge CFErrorRef)error;
        
        // 调用接口获取密钥对象
        SecKeyRef ret = SecKeyCreateWithData((__bridge CFDataRef)data, (__bridge CFDictionaryRef)options, &ee);
        if (error) {
            return nil;
        }
        return ret;
    }
    
    

    原生生成公私钥对象的一种通用方式 (iOS 9 及以前)

    针对 iOS 10 以前的版本,想要获取私钥的正规途径是通过 P12(亦即 PKCS #12) 文件获取(P12 是同时包含公私钥的文件,同时需要一个对称密码来使用 p12 文件),步骤也很简单:

    1. 读取 p12 文件,当然我不推荐你直接将 p12 文件放在 app bundle 中。你可以硬编码在代码中,会安全一丢丢。
    2. 设置参数字典,主要是设置你在导出 p12 文件时候设置的密码。
    3. 调用 SecPKCS12Import 导出 p12 文件包含的 item 数组
    4. 获取 item 数组第一个元素的字典,其中 kSecImportItemIdentity 键对应的是值也就是 SecIdentityRef 对象
    5. 从 SecIdentityRef 中拷出私钥对象

    如果要拷出公钥,稍微有点不一样:

    1. 上面步骤中获得 item 数组第一个元素的字典,其中 kSecImportItemTrust 键对应的是值也就是一个 Trust 对象。
    2. 调用 SecTrustCopyPublicKey 获取公钥对象

    下面是代码解释:

    NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"rsaPrivate" ofType:@"p12"];
    NSData *p12Data = [NSData dataWithContentsOfFile:resourcePath];
    
    NSMutableDictionary * options = [[NSMutableDictionary alloc] init];
    
    SecKeyRef privateKeyRef = NULL;
    id publicKey = NULL;
    
    // 改成你设置的密码
    [options setObject:@"" forKey:(id)kSecImportExportPassphrase];
    CFArrayRef items = CFArrayCreate(NULL, 0, 0, NULL);
    OSStatus securityError = SecPKCS12Import((CFDataRef) p12Data, (CFDictionaryRef)options, &items);
    
    if (securityError == noErr && CFArrayGetCount(items) > 0) {
        // 获取一个 Identity 对象
        CFDictionaryRef identityDict = CFArrayGetValueAtIndex(items, 0);
        
        // 获取私钥
        SecIdentityRef identityApp = (SecIdentityRef)CFDictionaryGetValue(identityDict, kSecImportItemIdentity);
        securityError = SecIdentityCopyPrivateKey(identityApp, &privateKeyRef);
        if (securityError != noErr) {
            privateKeyRef = NULL;
        }
        
        // 获取一个 Trust 对象
        SecTrustRef trustRef = (SecTrustRef)CFDictionaryGetValue(identityDict, kSecImportItemTrust);
        // 获取公钥
        publicKey = (__bridge_transfer id)SecTrustCopyPublicKey(trustRef);
    }
    CFRelease(items);
    

    从证书文件读取公钥对象

    从证书文件读取公钥对象步骤如下:

    1. 读取证书文件生成一个 Certificate 对象(SecCertificateRef 类型)
    2. 从 Certificate 对象获取一个 Trust 对象 (SecTrustRef 类型)
    3. 从 Trust 对象拷贝出公钥 (这一步可以先根据 Trust 对象来判断证书是否可信)

    代码解释如下:

    id publicKey = nil;
    SecCertificateRef certificate;
    SecCertificateRef certificates[1];
    CFArrayRef tempCertificates = nil;
    SecPolicyRef policy = nil;
    SecTrustRef trust = nil;
    SecTrustResultType result;
    
    certificate = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)certificateDate);
    if (certificate) {
        certificates[0] = certificate;
        tempCertificates = CFArrayCreate(NULL, (const void **)certificates, 1, NULL);
        policy = SecPolicyCreateBasicX509();
        SecTrustCreateWithCertificates(tempCertificates, policy, &trust);
        SecTrustEvaluate(trust, &result);
        // 获得公钥对象
        publicKey = (__bridge_transfer id)SecTrustCopyPublicKey(trust);
    }
    
    if (trust) {
        CFRelease(trust);
    }
    
    if (policy) {
        CFRelease(policy);
    }
    
    if (tempCertificates) {
        CFRelease(tempCertificates);
    }
    
    if (certificate) {
        CFRelease(certificate);
    }
    

    如何从密钥文件生成 P12 和证书等

    你可以参考这个 SO How can I get SecKeyRef from DER/PEM file

    开源库

    Objective-C-RSA 这个开源库源码解释了如何自己处理 PEM 格式密钥文件的头,但是由于解析力不够强,经常会返回一个空的密钥对象。所以必要时候可以参考一下。但是不太推荐。笔者对 ASN.1 等概念不太熟悉,这里不过多讨论了。

    使用 OpenSSL

    使用 OpenSSL 无法生成 SecKeyRef 密钥对象,但是 OpenSSL 提供了完整的密码学各类操作支持(加密,加签,解密,验签等),所以你完全可以不需要苹果的 Security 框架。你可以参考 支付宝的 Demo,了解如何使用该库。开源代码地址是 OpenSSL for iPhone

    iOS 上关于加密等密码学操作的建议

    苹果的官方文档 苹果 Security 框架文档 完整的描述了如何在苹果自有平台使用 Security 框架。你可以参考它。

    主要是理解几个对象:(文档地址 Certificate, Key, and Trust Services

    1. certificate 对象
    2. identity 对象
    3. trust 对象
    4. key 对象
    5. policy 对象

    引用

    1. OpenSSL for iPhone
    2. 苹果 sample code CryptoExercise
    3. Swift 对称密码使用法
    4. Swift 非对称密码使用法
    5. iOS 上的公钥 VS OpenSSL 上的公钥对比
    6. 密钥文件等的区别和转换
    7. iOS 上的 SHA256 with RSA VS JAVA 平台
    8. P12、证书文件的生成
    9. 苹果 Security 框架文档
    10. Objective-C-RSA 开源库
    展开全文
  • 正解: 1.打开Targets > Capailities > keychain sharing 2.字符串密钥位数为1024 位
    正解:
    
    1.打开Targets > Capailities >  keychain sharing

    2.字符串密钥位数为1024

    展开全文
  • static SecKeyRef _public_key=nil; + (SecKeyRef) getPublicKey{ // 从公钥证书文件中获取到公钥的SecKeyRef指针  if(_public_key == nil){  NSData *certificateData = [GTMBase64 decodeString:RSA_...
  • iOS RSA 证书加密

    2019-09-22 04:07:00
    #import "GLQyRsa.h" #import "GLSupprot.h" #import "GLLoginViewController.h" ...@implementation GLQyRsa ...static SecKeyRef _public_key=nil; + (SecKeyRef) getPublicKeyFile { // 从公钥证书文件中获...
  • 升级ios9后RSA加密SecItemAdd出问题的解决方法!问题描述(csdn上的网友):ret = SecItemAdd((__bridge CFDictionaryRef) publicKeyDict, (CFTypeRef*)&pubKeyRef);在iOS8系统下下面的上面...SecKeyRef...
  • macOS的私钥签名随笔

    2021-05-09 19:32:16
    把NSString转化成SecKeyRef参考CocoaCryptoMac 以下代码引用自iOS和MacOSX上的私钥签名不同 - (NSData *)signatureWithKey:(SecKeyRef)keyRef { if (keyRef == NULL) { return nil; } NSData *sha1Digest = ...
  • =============苹果自带方法===========...typedef void (^keyPair)(SecKeyRef publicKey ,SecKeyRef privateKey); #pragma mark - =============苹果自带方法===================== + (void)getRSAKeyPairWithKeySize
  • SecKeyRef keyRef = [self addPublicKey:pubKey]; addPublicKey方法  OSStatus status = SecItemAdd((__bridge CFDictionaryRef)publicKey, &persistKey);  OSStatus值为-3401
  • SecKeyRef keyRef = [RsaForSignature addPrivateKey:privKey]; 在读取key chain中的值时,默认的是在应用未锁屏时可读取值。 所以应用在锁屏时,[RSAEncryptor encryptString:publicKey: ] 会返回空。 看代码,...
  • iOS_RSA加密-生成秘钥的使用

    千次阅读 2016-10-17 17:01:41
    使用security.framework框架进行RSA加解密。 从cer证书文件中读取公钥 /** * 获取公钥 ...- (SecKeyRef)getPublicKey { if (!_publicKey) { [self loadPublicKeyFromFile:self.cerFilePath]; } re
  • 数据加密:RSA 密钥

    2018-12-18 08:08:46
    生成密钥对 生成密钥对的过程就是计算(e,d,n)的过程,在 iOS 中可以使用原生的方法来...- (BOOL)generateSecKeyPairWithKeySize:(NSUInteger)keySize publicKeyRef:(SecKeyRef *)publicKeyRef privateKeyRef:(Se...
  • RSA加密算法在iOS9下的问题解决方案

    千次阅读 2015-10-31 19:04:04
    之前写的可运行的RSA加密解密算法,升级到iOS9之后,到SecItemAdd就crash掉了。...打了断点发现SecKeyRef竟然为空,几个月前可不是这样的,只能是iOS9更新了什么。看了一下官方文档,给出了其他方向解决方案。
  • iOS使用security.framework实现RSA加解密

    千次阅读 2016-06-20 15:20:42
    最近研究了下使用security.framework框架进行RSA和AES加解密。从car证书文件中读取公钥,从pfx证书文件中读取私钥。 1、从cer证书文件中读取...- (SecKeyRef)getPublicKey { if (!_publicKey) { [self loadPublicKeyF
  • @property (nonatomic,readonly) SecKeyRef privateKeyRef; @property (nonatomic,readonly) NSData *publicKeyBits; @property (nonatomic,readonly) NSData *privateKeyBits; + (id)shareInstance; - (void)...
  • + (SecKeyRef)getPrivateKeyRefWithContentsOfFile:( NSString *)filePath password:( NSString *)password{ NSData *p12Data = [ NSData dataWithContentsOfFile:filePath]; if (!p12Data) { return ...
  • if (AFSecKeyIsEqualToKey((__bridge SecKeyRef)trustChainPublicKey, (__bridge SecKeyRef)pinnedPublicKey)) { trustedPublicKeyCount += 1; } } } return trustedPublicKeyCount > 0; } } return NO; }...
  • 首先介绍一下什么是 RSA 加密: 1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。...+ (NSData *)encryptData:(NSData *)data withKeyRef:(SecKeyRef) keyRef...
  • // 从公钥证书文件中获取到公钥的SecKeyRef指针 if (_public_key == nil){ NSData *certificateData = [Base64 decode:RSA_KEY_BASE64]; SecCertificateRef myCertificate = SecCertificateCreateWithData...
  • iOS 证书、密钥及信任服务

    万次阅读 2011-05-13 20:43:00
    ——翻译自Apple Reference《Certificate,Key,and Trust Services Programming Guide》 本章描述并演示了如何使用证书、密钥和信任服务去导入一个indentity,评估证书是否可信,判断证书失效的原因,以及失效证书...
  • iOS RSA加密解密

    千次阅读 2016-11-07 13:45:14
    + (SecKeyRef)getPrivateKeyRefWithContentsOfFile:( NSString *)filePath password:( NSString *)password{ NSData *p12Data = [NSData dataWithContentsOfFile:filePath]; if (!p12Data) { return nil ;...
  • //根据你的p12文件生成私钥对应的SecKeyRef 这边返回若是nil 请检查你p12文件的生成步骤 - (SecKeyRef)getPrivateKeyRefrenceFromData:(NSData*)p12Data password:(NSString*)password { SecKeyRef privateKeyRef =...
  • 通过路径生成 SecKeyRef _publicKey(即公钥); @param derFilePath derFilePath文件path */ - (void)loadPublicKeyWithPath:(NSString *)derFilePath; /** 生成密文:根据传入明文生成密文 @param text ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 413
精华内容 165
关键字:

SecKeyRef