NSData-AES Classe de Chiffrement/Déchiffrement dans le Cacao
Je tente de chiffrer/déchiffrer un fichier de texte brut dans mon éditeur de texte. le chiffrement semble bien fonctionner, mais le décryptage ne fonctionne pas, le texte est en place chiffré. Je suis certain que j'ai décrypté le texte, en utilisant le mot que je crypté - ce que quelqu'un pourrait regarder à travers l'extrait de code ci-dessous et de m'aider?
Merci 🙂
Cryptage:
NSAlert *alert = [NSAlert alertWithMessageText:@"Encryption"
defaultButton:@"Set"
alternateButton:@"Cancel"
otherButton:nil
informativeTextWithFormat:@"Please enter a password to encrypt your file with:"];
[alert setIcon:[NSImage imageNamed:@"License.png"]];
NSSecureTextField *input = [[NSSecureTextField alloc] initWithFrame:NSMakeRect(0, 0, 300, 24)];
[alert setAccessoryView:input];
NSInteger button = [alert runModal];
if (button == NSAlertDefaultReturn) {
[[NSUserDefaults standardUserDefaults] setObject:[input stringValue] forKey:@"password"];
NSData *data;
[self setString:[textView textStorage]];
NSMutableDictionary *dict = [NSDictionary dictionaryWithObject:NSPlainTextDocumentType
forKey:NSDocumentTypeDocumentAttribute];
[textView breakUndoCoalescing];
data = [[self string] dataFromRange:NSMakeRange(0, [[self string] length])
documentAttributes:dict error:outError];
NSData*encrypt = [data AESEncryptWithPassphrase:[input stringValue]];
[encrypt writeToFile:[absoluteURL path] atomically:YES];
Décryptage:
NSAlert *alert = [NSAlert alertWithMessageText:@"Decryption"
defaultButton:@"Open"
alternateButton:@"Cancel"
otherButton:nil
informativeTextWithFormat:@"This file has been protected with a password.To view its contents,enter the password below:"];
[alert setIcon:[NSImage imageNamed:@"License.png"]];
NSSecureTextField *input = [[NSSecureTextField alloc] initWithFrame:NSMakeRect(0, 0, 300, 24)];
[alert setAccessoryView:input];
NSInteger button = [alert runModal];
if (button == NSAlertDefaultReturn) {
NSLog(@"Entered Password - attempting to decrypt.");
NSMutableDictionary *dict = [NSDictionary dictionaryWithObject:NSPlainTextDocumentType
forKey:NSDocumentTypeDocumentOption];
NSData*decrypted = [[NSData dataWithContentsOfFile:[self fileName]] AESDecryptWithPassphrase:[input stringValue]];
mString = [[NSAttributedString alloc]
initWithData:decrypted options:dict documentAttributes:NULL
error:outError];
Où faire la
Salut Rob,j'ai eu l'NSData+AES classe (ce qui inclut ces méthodes) ici:iphonedevelopment.blogspot.com/2009/02/...
la question semble avoir fixé lui-même après la modification de la keybits valeur de 128.
David Schiefer: C'est une catégorie, et non une classe. Voir l'Objective-C, Langage de Programmation de document: developer.apple.com/mac/library/documentation/Cocoa/Conceptual/...
Vous voudrez peut-être consulter la RNCryptor bibliothèque qui entoure CommonCrypto.
-AESEncryptWithPassphrase:
et -AESDecryptWithPassphrase:
méthodes venir?Salut Rob,j'ai eu l'NSData+AES classe (ce qui inclut ces méthodes) ici:iphonedevelopment.blogspot.com/2009/02/...
la question semble avoir fixé lui-même après la modification de la keybits valeur de 128.
David Schiefer: C'est une catégorie, et non une classe. Voir l'Objective-C, Langage de Programmation de document: developer.apple.com/mac/library/documentation/Cocoa/Conceptual/...
Vous voudrez peut-être consulter la RNCryptor bibliothèque qui entoure CommonCrypto.
OriginalL'auteur Pripyat | 2010-04-05
Vous devez vous connecter pour publier un commentaire.
Pourquoi ne pas utiliser les algorithmes de chiffrement? Voici un NSData+AES j'ai écrit qui utilise CCCrypt avec un 256it clé de chiffrement AES256.
Vous pouvez l'utiliser comme:
et de les décrypter avec:
AVERTISSEMENT: Il n'y pas de garantie de mon NSData+AES est sans bug 🙂 C'est assez nouveau. Je souhaite la bienvenue à la révision du code.
Existe-il des sels dans le chiffrement de votre condition @nicerobot?
Il ya un soutien pour un premier vecteur tel que fournis par CCCrypt mais le sel est facilement juste ajouté du texte à chiffrer.
Voulez-vous tout simplement de générer des données aléatoires, et l'ajouter à la clé pour le chiffrement, puis stocker le sel dans le texte chiffré? Je suis un peu confus sur la façon dont j'allais sur l'utilisation d'une bibliothèque qui dispose d'un sel.
J'ai poussé les mises à jour. Je suis passé par tous les le projet avec Xcode 5, fixe, et ont construit eux. Ils sont tous construits avec succès. J'ai ensuite mis un test pour tester, il fonctionne (il le fait), et de montrer comment il fonctionne.
OriginalL'auteur nicerobot