2010-04-12 16 views
1

J'ai un fichier crypté et une clé publique. Comment puis-je le déchiffrer à partir de l'application sans installer de certificats?Déchiffrer le fichier avec la clé publique

public.key fichier

ressemble "e + ztydr5GG7saZyrIOtSWGQgHlQbuFn1IVlIIggPIWuLUNTOqN0Y ..."

Voici un code:

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); 

Cependant resultCode = -25300 (L'élément spécifié n'a pas été trouvé dans le trousseau). Qu'est-ce que je fais mal? Aucune suggestion?

+0

vous avez déjà la même question (http://stackoverflow.com/questions/2621197/decrypt-file-with-public-key) ouvert mais avec AES - changez la question existante! – Dror

+0

effectivement cette question avec le chiffrement AES est répondu correctement (C'est ma faute parce que je pensais que je ferme). Celui-ci est correct et réel! – Aston

Répondre

1

fichier public.key ressemble "e + ztydr5GG7saZyrIOtSWGQgHlQbuFn1IVlIIggPIWuLUNTOqN0Y ..."

Cela ressemble beaucoup à une chaîne Base64, à mes yeux. Vous avez presque certainement besoin que les octets bruts et non codés soient transmis aux API de sécurité. Si vous mettez ce fichier dans l'ensemble de votre application, le plus simple serait probablement de le décoder au préalable et de stocker le binaire brut dans votre application.

+0

Existe-t-il des fonctions API pour effectuer la conversion? Aussi je m'inquiète à propos de ce simulateur (j'ai lu quelque part) ne supporte pas les certificats ou je me trompe? – Aston

+0

Pas dans les API Cocoa, non, mais je suis sûr que Google va trouver le code de quelqu'un pour cela. –

+0

J'ai utilisé quelques exemples de décodage de: http://www.cocoadev.com/index.pl?BaseSixtyFour et le problème reste le même - erreur -25300. Aussi, j'ai trouvé que la clé: kSecAttrApplicationTag est pour la clé privée, mais j'utilise un public et il n'y a pas de telle clé pour le public, peut-être voici le problème? Des suggestions? – Aston

-1

Vous ne pouvez pas déchiffrer un fichier avec une clé publique, la clé publique crypte et la clé privée déchiffre, c'est le principe de base des algos asymétriques. Où est la sécurité dans un fichier crypté si la clé publique (c'est-à-dire celle que tout le monde connaît) peut la déchiffrer?

+1

Ce type de cryptage appelle 'signature'. La sécurité n'est pas dans les données, mais l'expéditeur de données! – Aston