Mise à jour de la classe pour plus de sécurité :

Plus d'attribut chain, les attributs contiennent
le hash code de la chaine passer en paramètre lors
de l'initialisation.
Mise à jour des commentaires.
This commit is contained in:
Loic GUEGAN 2015-03-07 10:56:15 +04:00
parent 1c6f11fdd8
commit 88b5076459
2 changed files with 42 additions and 17 deletions

View file

@ -4,22 +4,24 @@
//Constructeur //Constructeur
HASHCrypt::HASHCrypt(std::string chain){ HASHCrypt::HASHCrypt(std::string chain){
this->chain=chain; //Initialisation de l'attribut chain this->MD5_32=this->initMD5_32(chain); //Initialisation MD5 sur 32bits
this->MD5_128=this->initMD5_128(chain); //Initialisation MD5 sur 128bits
} }
//Destructeur //Destructeur
HASHCrypt::~HASHCrypt(){ HASHCrypt::~HASHCrypt(){
} }
//Retourne la somme de controle MD5 sur 32 bits de l'attribut chain //Retourne la somme de controle MD5 sur 32 bits
std::string HASHCrypt::getMD5_32(){ std::string HASHCrypt::initMD5_32(std::string chain){
//Calcule de la somme de controle MD5 dans un type byte à partir de l'attribut chain //Calcule de la somme de controle MD5 dans un type byte à partir du paramètre chain
CryptoPP::Weak1::MD5 hash; CryptoPP::Weak1::MD5 hash;
byte digest[ CryptoPP::Weak1::MD5::DIGESTSIZE ]; byte digest[ CryptoPP::Weak1::MD5::DIGESTSIZE ];
hash.CalculateDigest( digest, (byte*) this->chain.c_str(), this->chain.length() ); hash.CalculateDigest( digest, (byte*) chain.c_str(), chain.length() );
//Convertion du hash en std::string //Convertion du hash en std::string
CryptoPP::HexEncoder encoder; CryptoPP::HexEncoder encoder;
@ -32,13 +34,13 @@ std::string HASHCrypt::getMD5_32(){
return output; return output;
} }
//Retourne la somme de controle MD5 sur 128 bits de l'attribut chain //Retourne la somme de controle MD5 sur 128 bits
std::string HASHCrypt::getMD5_128(){ std::string HASHCrypt::initMD5_128(std::string chain){
//Calcule de la somme de controle MD5 dans un type byte à partir de l'attribut chain //Calcule de la somme de controle MD5 dans un type byte à partir du paramètre chain
CryptoPP::Weak1::MD5 hash; CryptoPP::Weak1::MD5 hash;
byte digest[ CryptoPP::Weak1::MD5::DIGESTSIZE * 4 ]; byte digest[ CryptoPP::Weak1::MD5::DIGESTSIZE * 4 ];
hash.CalculateDigest( digest, (byte*) this->chain.c_str(), this->chain.length() ); hash.CalculateDigest( digest, (byte*) chain.c_str(), chain.length() );
//Convertion du hash en std::string //Convertion du hash en std::string
CryptoPP::HexEncoder encoder; CryptoPP::HexEncoder encoder;
@ -50,3 +52,14 @@ std::string HASHCrypt::getMD5_128(){
//Retourne la sortie de la convertion //Retourne la sortie de la convertion
return output; return output;
} }
//Getter MD5_32
std::string HASHCrypt::getMD5_32(){
return this->MD5_32;
}
//Getter MD5_128
std::string HASHCrypt::getMD5_128(){
return this->MD5_128;
}

View file

@ -4,32 +4,44 @@
//----- Includes crypto++ ----- //----- Includes crypto++ -----
#define CRYPTOPP_ENABLE_NAMESPACE_WEAK 1
//Pour le calcule de la somme de controle MD5 //Pour le calcule de la somme de controle MD5
#include "crypto++/md5.h" #include <crypto++/md5.h>
//Pour la convertion en hexadécimal et vice-versa //Pour la convertion en hexadécimal et vice-versa
#include "crypto++/hex.h" #include <crypto++/hex.h>
/*----- Description ----- /*----- Description -----
Classe executant divers fonctions de hashage sur Classe executant divers fonctions de hachage sur
un attribut chain en utilisant la bibiothèque crypto++ un paramètre donné à l'initialisation, ainsi celui-ci
n'est présent en mémoire qu'à l'initialisation.
Utilise la bibliothèque crypto++
*/ */
class HASHCrypt{ class HASHCrypt{
public: public:
//Constructeur
HASHCrypt(std::string chain); HASHCrypt(std::string chain);
//Destructeur
~HASHCrypt(); ~HASHCrypt();
std::string getMD5_32(); //Calcule de la somme de controle MD5 sur 32bit std::string getMD5_32(); //Retourne MD5_32
std::string getMD5_128(); //Calcule de la somme de controle MD5 sur 128bit std::string getMD5_128(); //Retourne MD5_128
private: private:
std::string chain; //Attribut paramètre des fonctions de hashage //Calcule de MD5 sur 32bits
std::string initMD5_32(std::string chain);
//Calcule de MD5 sur 128 bits
std::string initMD5_128(std::string chain);
std::string MD5_32; //Attribut MD5 sur 32bits
std::string MD5_128; //Attribut MD5 sur 128 bits
}; };