Bonjour à tous
Je désire utiliser la lib Crypto++ dans un projet, et pour se faire j'ai décidé de commencer par la tester avec un petit programme console que je nomme "hashtest" (car il réalise simplement un hash de type SHA-512 d'une chaîne de caractères entrés au clavier).
Pour compiler, j'utilise Visual C++ 2005 Express avec le Microsoft Platform SDK, et je précise que c'est la première fois que je travaille avec cet environnement. Mais comme il s'agit du grand classique sous windows, je me dis que je ne devrais pas avoir de problème pour intégrer des librairies tierces... Faux espoirs malheureusement...
Déjà sur le site de cryptopp ils proposent 2 versions : 5.2.1 non compilée et 5.2.3 déjà compilée (.lib et .dll dispo). Je commence donc par tester avec la 5.2.3 : je renseigne le chemin des include et de la lib dans Visual C++, je crée un nouveau projet console, j'ajoute mon code et je compile. La compil marche sans problème, mon programme me demande la chaîne que je veux hasher, j'entre le mot "toto" j'appuie sur <Enter> et là paf je me ramasse le sympathique message suivant :
Or, le même programme tourne parfaitement sous linux, je sais donc que mon code source n'est pas en cause.Unhandled exception at 0x7c81eb33 in Hashtest.exe: Microsoft C++ exception: CryptoPP::SelfTestFailure at memory location 0x0012f6d0..
J'essaie alors de recompiler la lib... et cette fois je me heurte à des messages d'erreur à la compilation même !
Que ce soit avec la version 5.2.3 ou 5.2.1 résultats identiques...'bool CryptoPP::OIDLessThan::operator ()<CryptoPP::ECP>(const CryptoPP::OID &,const CryptoPP::EcRecommendedParameters<CryptoPP::ECP> &)' : cannot convert parameter 1 from 'const CryptoPP::EcRecommendedParameters<CryptoPP::ECP>' to 'const CryptoPP::OID &'
Reason: cannot convert from 'const CryptoPP::EcRecommendedParameters<CryptoPP::ECP>' to 'const CryptoPP::OID'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Une dernière précision : pour vérifier que je ne fais pas d'erreur dans les manipulations de Visual C++, j'ai testé l'intégration d'une autre lib, en l'occurence Irrlicht (moteur 3D), et j'ai réussi à compiler et exécuter une application exemple sans le moindre problème et à la manière du cas d'école : ajout des rep include/lib, compilation, exécution...
Bref je calle pour Crypto++![]()
Toute aide serait grandement appréciée
PS : Voici le code source de mon prog de test :
Pour info, sous linux Debian rien de plus simple pour utiliser Crypto++ :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 /* Prog de test pour la lib Crypto++ Compile: g++ -o hashtest hashtest.cpp -lcrypto++ Site pour tester: http://serversniff.net/content.php?do=hash */ #include <iostream> #include <string> // ajouter crypto++/ au chemin sous linux #include <cryptlib.h> #include <sha.h> using namespace std; using namespace CryptoPP; int main() { string plaintext; byte sig[SHA512::DIGESTSIZE]; cout<<"Chaîne de caractères à hasher: "; getline(cin, plaintext); // pour saisir des chaînes avec espaces // appel à la lib Crypto++ pour calculer le hash SHA512 hash; hash.CalculateDigest(sig, (byte const *)plaintext.c_str(), plaintext.size()); cout<<"Hash ("<<SHA512::DIGESTSIZE<<" bytes) = "; for (int i=0; i<SHA512::DIGESTSIZE; i++) cout<<hex<<uppercase<<(int)sig[i]<<" "; cout<<dec<<nouppercase<<endl; }
1. apt-get install libcrypto++-dev
2. créer le fichier hashtest.cpp comme montré ci-dessus
3. pour compiler taper une seule ligne : g++ -o hashtest hashtest.cpp -lcrypto++
Ce n'est pas un troll mais une simple constatation, on voit bien ici que c'est windows qui est nettement plus compliqué que linux![]()
Partager