首页 > 代码库 > iOS RSA 证书加密
iOS RSA 证书加密
#import "GLQyRsa.h"#import "GLSupprot.h"#import "GLLoginViewController.h"@implementation GLQyRsastatic SecKeyRef _public_key=nil;+ (SecKeyRef) getPublicKeyFile{ // 从公钥证书文件中获取到公钥的SecKeyRef指针 if(_public_key == nil){ //NSData *certificateData = http://www.mamicode.com/[RSA_KEY_BASE64 dataUsingEncoding:NSUTF8StringEncoding];>// NSString *publicKeyPath = [[NSBundle mainBundle] pathForResource:@"public_key"// ofType:@"der"];// if (publicKeyPath == nil) {// NSLog(@"Can not find pub.der");// return nil;// } NSString *fielName = [[NSUserDefaults standardUserDefaults]objectForKey:my_publicKeyFileName]; //NSLog(@"fielName:%@",fielName); fileName为.cer证书 if(!fielName) { NSLog(@"fielName nil"); return nil; } NSDate *certificateData =http://www.mamicode.com/ [NSData dataWithContentsOfFile:fielName]; if (certificateData =http://www.mamicode.com/= nil) { NSLog(@"Can not read from pub.der"); return nil; } SecCertificateRef myCertificate = SecCertificateCreateWithData(kCFAllocatorDefault, (__bridge 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;}+ (NSData*) rsaEncryptString:(NSString*) string{ SecKeyRef key = [self getPublicKeyFile]; if(!key) { NSLog(@"secKeyRefNULL"); return nil; } size_t cipherBufferSize = SecKeyGetBlockSize(key); uint8_t *cipherBuffer = malloc(cipherBufferSize * sizeof(uint8_t)); NSData *stringBytes = [string dataUsingEncoding:NSUTF8StringEncoding]; size_t blockSize = cipherBufferSize - 11; size_t blockCount = (size_t)ceil([stringBytes length] / (double)blockSize); NSMutableData *encryptedData =http://www.mamicode.com/ [[NSMutableData alloc] init]; for (int i=0; i<blockCount; i++) { int bufferSize = MIN(blockSize,[stringBytes length] - i * blockSize); NSData *buffer = [stringBytes subdataWithRange:NSMakeRange(i * blockSize, bufferSize)]; OSStatus status = SecKeyEncrypt(key, kSecPaddingPKCS1, (const uint8_t *)[buffer bytes], [buffer length], cipherBuffer, &cipherBufferSize); if (status == noErr){ NSData *encryptedBytes = [[NSData alloc] initWithBytes:(const void *)cipherBuffer length:cipherBufferSize]; [encryptedData appendData:encryptedBytes]; }else{ if (cipherBuffer) free(cipherBuffer); return nil; } } if (cipherBuffer) free(cipherBuffer); // NSLog(@"Encrypted text (%d bytes): %@", [encryptedData length], [encryptedData description]); // NSLog(@"Encrypted text base64: %@", [Base64 encode:encryptedData]); return encryptedData;}
iOS RSA 证书加密
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。