Open
Description
int md5_file(char * name, char * out) {
if (name == NULL || out == NULL) {
return -1;
}
MD5_CTX ctx;
md5_init(&ctx);
struct stat st;
if(-1 == stat(name, &st)) {
md5_update(&ctx, name, strlen(name));
}
else {
FILE * fp = fopen(name, "r+");
if (!fp) {
fprintf(stderr, "md5_file: open file(%s) error!\n", name);
fclose(fp);
return -1;
}
char buff[1024];
memset(buff, 0, sizeof(buff));
size_t len = 0;
while (len = fread(buff, 1, sizeof(buff), fp)) {
md5_update(&ctx, &buff, len);
}
fclose(fp);
}
BYTE digest[MD5_BLOCK_SIZE] = {0};
md5_final(&ctx, digest);
for(int idx = 0; idx < MD5_BLOCK_SIZE; idx += 1) {
sprintf(out + (idx * 2), "%02x", digest[idx]);
}
return 0;
}
Metadata
Metadata
Assignees
Labels
No labels