使用公钥解密文件

时间:2010-04-12 10:59:07

标签: iphone rsa public-key

我有加密文件和公钥。如何在不安装证书的情况下从应用程序解密?

文件public.key看起来像“e + ztydr5GG7saZyrIOtSWGQgHlQbuFn1IVlIIggPIWuLUNTOqN0Y ......”

以下是一些代码:

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"public" ofType:@"key"];  
NSData* publicKeyData = [NSData dataWithContentsOfFile:filePath];  

NSMutableDictionary * queryPublicKey = [[NSMutableDictionary alloc] init];
[queryPublicKey setObject:(id)kSecClassKey forKey:(id)kSecClass];
[queryPublicKey setObject:publicKeyData forKey:(id)kSecAttrApplicationTag];
[queryPublicKey setObject:(id)kSecAttrKeyTypeRSA forKey:(id)kSecAttrKeyType];
[queryPublicKey setObject:[NSNumber numberWithBool:YES] forKey:(id)kSecReturnRef];

OSStatus resultCode = noErr;
SecKeyRef publicKeyReference = NULL;
resultCode = SecItemCopyMatching((CFDictionaryRef)queryPublicKey, (CFTypeRef*)&publicKeyReference);

但是resultCode = -25300(在钥匙串中找不到指定的项目)。我做错了什么?有什么建议吗?

2 个答案:

答案 0 :(得分:1)

  

文件public.key看起来像“e + ztydr5GG7saZyrIOtSWGQgHlQbuFn1IVlIIggPIWuLUNTOqN0Y ......”

在我看来,这看起来非常类似于Base64编码的字符串。您几乎肯定需要将原始的未编码字节传递给安全API。如果您将此文件放在应用程序的包中,最简单的方法可能是事先对其进行解码,并将原始二进制文件存储在您的应用程序中。

答案 1 :(得分:-1)

您不能使用公钥解密文件,公钥加密和私钥解密,这是非对称算法的基本原则。如果公钥(即每个人都知道的公钥)可以对其进行解密,那么加密文件中的安全性在哪里?