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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
/********************************************/
/* basé sur : */
/* http://www.target0.be/code/md5.c */
/********************************************/
#include <stdio.h>
#include <string.h>
#include <openssl/evp.h> /* bibliothèque OpenSSL */
void md5(char *chaine)
{
EVP_MD_CTX mdctx;
const EVP_MD *md;
unsigned char md_value[EVP_MAX_MD_SIZE];
int md_len,i;
char *buf = (char *)malloc(EVP_MAX_MD_SIZE*sizeof(char));
memset(buf,0,EVP_MAX_MD_SIZE);
OpenSSL_add_all_digests();
md = EVP_get_digestbyname("md5");
if (!md)
{
fprintf(stderr,"Cannot find md5 digest\n");
free(buf);
exit(0);
}
EVP_MD_CTX_init(&mdctx);
EVP_DigestInit_ex(&mdctx,md,NULL);
EVP_DigestUpdate(&mdctx,chaine,strlen(chaine));
EVP_DigestFinal_ex(&mdctx,md_value,(unsigned int*)&md_len);
EVP_MD_CTX_cleanup(&mdctx);
for (i=0;i<md_len;i++)
sprintf(buf+i+i,"%02x",md_value[i]);
fprintf(stdout, "%s : %s\n", chaine, buf);
free(buf);
} |
Partager