[C] Hashage MD5

Bonjour,

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

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

12 réponses

  • Votes
  • Date
  • Date décroissante
  1. 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);
    
    }


    ??
    1. Il y a un problème ... Je cherche une fonction de Hash md5 pour un char, pas pour un fichier ...
      1. Contributeur
        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;
        }
        1. > 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/
          1. Contributeur
            C'est le code que j'ai montré.
            Il suffit de recoder mon bout de programme en C, ça devrait pas être trop dur ...