1

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

文件 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(在钥匙串中找不到指定的项目)。我做错了什么?有什么建议么?

4

2 回答 2

1

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

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

于 2010-04-12T14:22:24.320 回答
-1

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

于 2010-04-12T14:30:07.720 回答