2010-06-28 7 views
4

Il n'y a pratiquement pas de guides noob pour crypto ++ là-bas. Ou aucun que j'ai trouvé de toute façon. Ce que je veux faire est de déchiffrer un tableau de uchars que je génère avec un autre chiffreur AES. Où devrais-je commencer? J'ai la bibliothèque construite et reliant grand. Dois-je configurer quelque chose ou dois-je simplement appeler une fonction sur ma matrice (et si oui, quelle fonction)?Crypto ++ AES Déchiffrer comment?

Je trouverais vraiment de l'aide de quelqu'un qui connaît ce genre de choses.

Merci

+2

L'expérience a montré que les API actuelles de crypto sont dangereuses pour les noobs. Les comprendre semble exiger beaucoup de connaissances * crypto * qui ne peuvent être apprises dans un guide de démarrage rapide. –

+0

indigoOrange - gardez à l'esprit que le cryptage seul est rarement suffisant. Vous voulez généralement un mode de cryptage authentifié. En l'absence d'autres informations, vous préférez presque toujours les modes 'EAX',' GCM' ou 'CCM' sur d'autres modes comme le mode' CBC'. Et vous évitez presque toujours le mode 'ECB' comme la peste parce qu'il perd la sécurité sémantique lorsque vous réutilisez la clé de chiffrement ou cryptez plus d'un bloc. – jww

Répondre

3

Je ne dirais pas que je "sais que mon truc" trop à ce sujet, mais Voici un code de test que j'ai mis ensemble pour crypter/décrypter des chaînes avec AES. L'étendre à d'autres données ne devrait pas être trop difficile.

string output; 
CTR_Mode<AES>::Encryption encrypt((const byte*)key,AES::DEFAULT_KEYLENGTH,(const byte*)iv); 
StringSource(plaintext, true, new StreamTransformationFilter(encrypt, new StringSink(output))); 
cout << "Encrypted: " << output << endl; 

string res; 
CTR_Mode<AES>::Decryption decrypt((const byte*)key,AES::DEFAULT_KEYLENGTH,(const byte*)iv); 
StringSource(output, true, new StreamTransformationFilter(decrypt, new StringSink(res))); 
cout << "Decrypted: " << res << endl; 

Tout en travaillant sur ce point, je trouve le code source dans le programme de test de Crypto (le projet VisualStudio appelé « cryptest ») pour être d'une grande aide. C'était un peu difficile à lire au début, mais ça devient plus facile quand on travaille avec. J'ai aussi beaucoup d'aide pour comprendre les modes de chiffrement par blocs disponibles de Wikipedia (http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation).