Я хочу получать одинаковое суммирование с кодом C и командой md5sum file.data каждый раз, когда я получаю разные значения md5sum и выходные данные to_md5 (), как получить то же самое?
мой код похож на следующий:
char* to_md5(int* buffer,int buffersize){
MD5_CTX ctx;
int fg,n,i;
char* out = (char*)malloc(33);
char digest[MD5_DIGEST_LENGTH];
for(i = 0 ; i <= buffersize ; i=i+10)
{
fg = MD5_Init(&ctx);
fg = MD5_Update(&ctx,buffer+i,i);
fg = MD5_Final(digest,&ctx);
if(fg != 1) {fprintf(stderr,"error in MD5_Update() ");exit(-1);}
printf("digest = %x\n",digest);
}
for (n = 0; n < 16; ++n)
{
snprintf(&(out[n*2]), 16*2, "%02x", (unsigned int)digest[n]);
}
printf(" char = %s\n",out);
return out ;
}
int main (){
int i,ierr,rc,iter;
char out[256];
int* buffer;
int buffersize;
int nb_iter;
FILE * file;
if(ierr != 0) exit(-1);
buffersize = 5;
nb_iter = 1;
buffersize *= 10;
printf("bufsize: %ld\n",buffersize);
buffer = (int*) calloc(buffersize,sizeof(int));
srand(time(NULL));
for(i = 0; i < buffersize; i ++){
buffer[i] = rand();
}
file = fopen("buffer.dat","w");
fwrite(buffer,sizeof(int),buffersize,file);
fclose(file);
printf(" :md5sum:%s]\n",to_md5(buffer,buffersize));
// the command to compare my checksum of my array
printf("md5sum = ");system("md5sum buffer.dat");
printf("\n");
free(buffer);
return 0 ;
}
каждый раз, когда я получаю разные значения md5sum и выходные данные to_md5 (), как получить то же самое?