Расшифровать файл с открытым ключом - PullRequest
1 голос
/ 12 апреля 2010

У меня есть зашифрованный файл и открытый ключ. Как я могу расшифровать его из приложения без установки сертификатов?

файл 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 ]

1 голос
/ 12 апреля 2010

файл public.key выглядит как "e + ztydr5GG7saZyrIOtSWGQgHlQbuFn1IVlIIggPIWuLUNTOqN0Y ..."

На мой взгляд, это очень похоже на строку в кодировке Base64. Вам почти наверняка нужны необработанные незакодированные байты для передачи в API безопасности. Если вы помещаете этот файл в комплект вашего приложения, возможно, проще всего будет его предварительно декодировать и сохранить в приложении необработанный двоичный файл.

0 голосов
/ 12 апреля 2010

Вы не можете расшифровать файл с открытым ключом, открытый ключ шифрует и закрытый ключ дешифрует, что является основным принципом асимметричных алгоритмов. Где защита в зашифрованном файле, если открытый ключ (т.е. тот, который всем известен) может его расшифровать?

...