#include #include #define BUFSIZE 65536 int main(int argc, char **argv) { FILE *input; char *buffer; int readlen; MD5_CTX md5_context; unsigned char finalmd5[16]; int itr; if (argc < 2) { printf("Usage is %s \n", argv[0]); exit(1); } if ((buffer = malloc(BUFSIZE)) == NULL) { printf("Unable to allocate %i bytes for buffer\n", BUFSIZE); exit(1); } if ((input = fopen(argv[1], "rb")) == NULL) { printf("Unable to open %s\n", argv[1]); perror("fopen"); exit(1); } MD5Init(&md5_context); do { readlen = fread(buffer, 1, BUFSIZE, input); MD5Update(&md5_context, buffer, readlen); } while (readlen > 0); MD5Final(finalmd5, &md5_context); printf("md5sum: "); for (itr = 0; itr < 16; itr++) printf("%.2x", finalmd5[itr]); printf("\n"); return 0; }