#include "printable_md5.h"
#include <string.h>
#include <stdio.h>
#include <md5.h>
#define HIVAL(x, y) ((x > y) ? x : y)
#define LOVAL(x, y) ((x < y) ? x : y)
int generate_printable_md5(char *buff_p, int buff_l, char *base_p, int base_l){
MD5_CTX md5_ctx;
char tbuf_p[MD5_DIGEST_LENGTH*2+1];
int tbuf_l;
int x;
if(buff_p == NULL)
return 1;
if(buff_l < MD5_DIGEST_LENGTH*2+1)
return 2;
tbuf_l = sizeof(tbuf_p);
memset(buff_p, 0, buff_l);
memset(tbuf_p, 0, tbuf_l);
MD5_Init(&md5_ctx);
MD5_Update(&md5_ctx, base_p, base_l);
MD5_Final(tbuf_p, &md5_ctx);
memset(buff_p, 0, (MD5_DIGEST_LENGTH*2+1));
for(x = 0 ; x < MD5_DIGEST_LENGTH ; x++)
sprintf(buff_p+x*2, "%02hhX", tbuf_p[x]);
return 0;
}
#ifdef _SAMPLE_
int main(int argc, char **argv){
char b[4096];
generate_printable_md5(b, sizeof(b), "sample text", strlen("sample text"));
printf("sample hash: %s\n", b);
return 0;
}
#endif
#ifndef PRINTABLE_MD5_H
#define PRINTABLE_MD5_H
int generate_printable_md5(char *buff_p, int buff_l, char *base_p, int base_l);
#endif