Iphone 用公钥解密文件

Iphone 用公钥解密文件,iphone,rsa,public-key,Iphone,Rsa,Public Key,我有加密的文件和公钥。我如何在不安装证书的情况下从应用程序中解密它 文件public.key看起来像“e+ztydr5gg7sazyriotswgqghlqbufn1ivliggpiwuluntoqn0y…” 以下是一些代码: NSString* filePath = [[NSBundle mainBundle] pathForResource:@"public" ofType:@"key"]; NSData* publicKeyData = [NSData dataWithContents

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

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

以下是一些代码:

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(在密钥链中找不到指定的项)。我做错了什么?有什么建议吗

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


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

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

您已经有相同的问题()未解决,但使用AES-更改现有问题!实际上,AES加密的问题回答正确(这是我的错,因为我以为我关闭了它)。这是正确的和实际的!是否有任何API函数进行转换?此外,我还担心模拟器(我在别处读到)不支持证书,或者我错了?不是在Cocoa API中,不是,但我相信谷歌会为它找到一些人的代码。我使用了几个解码示例:问题仍然是-错误-25300。我还发现key:kSecAttrApplicationTag用于私钥,但是我使用的是public-one,public没有这样的密钥,也许这就是问题所在?有什么建议吗?这种类型的加密调用“签名”。安全不在于数据,而在于数据发送者!