这个有可能。一种方法是像您所做的那样临时导入证书:
NSData *mydata = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"mycert" withExtension:@"cer"]];
然后只需将其注销:
NSLog(@"%@",myData);
这将输出一些由 < 和 > 符号包围的长字符串。
NSData 对象的示例输出:
<6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8
6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8
6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8
6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8
6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8
6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8
6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8>
复制此输出并将其硬编码到 .m 文件的顶部。这样,它将被编译成非人类可读的代码。
这是实现此目的的一种方法:
#define CERT_DATA @"<6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8
6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8
6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8
6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8
6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8
6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8
6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8 6j5434 34j320 29dmr4 dj28d8>"
下一部分是使这种方法发挥作用的关键。您必须将 NSData 的字符串表示形式转换回 NSData。
这是一个可以做到这一点的方法:
-(void)yourMethodThatNeedsCertData
{
NSData *certData = [self dataFromHexString:[[[CERT_DATA stringByReplacingOccurrencesOfString:@"<" withString:@""]stringByReplacingOccurrencesOfString:@">" withString:@""] stringByReplacingOccurrencesOfString:@" " withString:@""]];
}
- (NSData *)dataFromHexString:(NSString *)string
{
// Converts the NSData string representation back into NSData object
const char *chars = [string UTF8String];
int i = 0, len = string.length;
NSMutableData *data = [NSMutableData dataWithCapacity:len / 2];
char byteChars[3] = {'\0','\0','\0'};
unsigned long wholeByte;
while (i < len)
{
byteChars[0] = chars[i++];
byteChars[1] = chars[i++];
wholeByte = strtoul(byteChars, NULL, 16);
[data appendBytes:&wholeByte length:1];
}
return data;
}
请注意,您必须通过删除所有空格和“<”“>”字符来“清理”NSData 字符串 CERT_DATA。祝你好运,我希望这会有所帮助!