[C] Hashage MD5

Utilisateur anonyme -  
ghuysmans99 Messages postés 2496 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je programme en C et je voudrais savoir comment hasher un mot en md5 ?

Merci bcp ^^
Configuration: Windows ... malheureusement ...

12 réponses

  1. ghuysmans99 Messages postés 2496 Date d'inscription   Statut Contributeur Dernière intervention   342
     
    Si t'es sous Windows, utilise CryptoAPI.
    0
  2. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  3. Utilisateur anonyme
     
    Mais il existe pas une fonction spécifique, je veux dire sans utiliser le main, du genre :

    char md5 (char acoder[]){
    
    blablabla ...
    
    return code;
    }
    
    int main (){
    
    md5(Bonjour);
    
    }


    ??
    0
  4. ghuysmans99 Messages postés 2496 Date d'inscription   Statut Contributeur Dernière intervention   342
     
    Tu dois la créer toi-même.
    0
  5. Utilisateur anonyme
     
    Il y a un problème ... Je cherche une fonction de Hash md5 pour un char, pas pour un fichier ...
    0
  6. Utilisateur anonyme
     
    Personne n'a une fonction deja faite ??
    0
  7. ghuysmans99 Messages postés 2496 Date d'inscription   Statut Contributeur Dernière intervention   342
     
    J'ai ça en C++ :
    #define WIN32_LEAN_AND_MEAN
    #define _CRT_SECURE_NO_WARNINGS
    #include <windows.h>
    #include <wincrypt.h>
    #include <stdio.h>
    
    char* GenericHash(unsigned int AlgId,char* Buffer, int lBuffer)
    {
    	HCRYPTPROV hProv; HCRYPTHASH hHash;
    	BYTE* Hash; DWORD lHash, len;
    
    	if (CryptAcquireContext(&hProv,NULL,NULL,PROV_RSA_FULL,CRYPT_VERIFYCONTEXT | CRYPT_MACHINE_KEYSET))
    	{
    		if (CryptCreateHash(hProv,AlgId,0,0,&hHash))
    		{
    			if (CryptHashData(hHash,(BYTE*)Buffer,lBuffer,0))
    			{
    				if (CryptGetHashParam(hHash,HP_HASHSIZE,(BYTE*)&lHash,&len,0))
    				{
    					Hash = new BYTE[lHash];
    					if (!Hash) return NULL;
    					if (!CryptGetHashParam(hHash,HP_HASHVAL,Hash,&lHash,0))
    					{
    						delete[] Hash;
    						return NULL;
    					}
    				}
    			}
    			else return NULL;
    		}
    		else return NULL;
    	}
    	else return NULL;
    
    	CryptDestroyHash(hHash);
    	CryptReleaseContext(hProv,0);
    
    	char* sHash = new char[lHash*2+1]; memset(sHash,0,lHash*2+1);
    	for (unsigned char i = 0; i <= lHash-1; i++)
    	{
    		sprintf(sHash+(i*2),"%02X",Hash[i]);
    	}
    	delete[] Hash;
    	return sHash;
    }
    0
  8. Hade
     
    > Mais il existe pas une fonction spécifique,
    Si , il y a les apis MD5 sous Windows (cf chez les pros pour les exemple https://www.ovh.co.uk/mail/
    0
    1. ghuysmans99 Messages postés 2496 Date d'inscription   Statut Contributeur Dernière intervention   342
       
      C'est le code que j'ai montré.
      Il suffit de recoder mon bout de programme en C, ça devrait pas être trop dur ...
      0