???C???????MD5?,???????MD5?,??md5deep?OpenSSL??GNU md5sum?????OpenSSL???,????????????:
#include#include #define MAX_BUFFER_SIZE 1024 int main() { char filename[MAX_BUFFER_SIZE]; unsigned char c[MD5_DIGEST_LENGTH]; int i; printf("??????MD5????:"); fgets(filename, MAX_BUFFER_SIZE, stdin); // ??filename????? for (i = 0; i < MAX_BUFFER_SIZE; i++) { if (filename[i] == '\n') { filename[i] = '\0'; break; } } FILE *file = fopen(filename, "rb"); if (!file) { printf("?????? %s\n", filename); return 1; } MD5_CTX md5Context; MD5_Init(&md5Context); unsigned char buffer[MAX_BUFFER_SIZE]; int bytesRead; while ((bytesRead = fread(buffer, 1, MAX_BUFFER_SIZE, file)) != 0) { MD5_Update(&md5Context, buffer, bytesRead); } MD5_Final(c, &md5Context); printf("MD5 ??:"); for (i = 0; i < MD5_DIGEST_LENGTH; i++) { printf("x", c[i]); } printf("\n"); fclose(file); return 0; }
?????????,????????MD5????,??????,???????????MD5????,????????OpenSSL?,????????????:
gcc -o md5 md5.c -lssl -lcrypto
??,md5.c
???????????,-lssl -lcrypto
?????OpenSSL??