C语言利用crypto计算大文件MD5
时间: 2024-01-16 15:02:42 浏览: 176
C语言实现MD5加密算法
可以使用 OpenSSL 库来计算大文件的 MD5 值,以下是使用 C 语言编写的示例代码:
```c
#include <stdio.h>
#include <openssl/md5.h>
#define BUFFER_SIZE 1024
int main(int argc, char *argv[]) {
if (argc != 2) {
printf("Usage: %s <file_path>\n", argv[0]);
return 1;
}
char *file_path = argv[1];
FILE *file = fopen(file_path, "rb");
if (!file) {
printf("Failed to open file: %s\n", file_path);
return 1;
}
MD5_CTX md5_ctx;
MD5_Init(&md5_ctx);
unsigned char buffer[BUFFER_SIZE];
size_t read_len;
while ((read_len = fread(buffer, 1, BUFFER_SIZE, file)) > 0) {
MD5_Update(&md5_ctx, buffer, read_len);
}
fclose(file);
unsigned char md5_value[MD5_DIGEST_LENGTH];
MD5_Final(md5_value, &md5_ctx);
printf("MD5 value of %s: ", file_path);
for (int i = 0; i < MD5_DIGEST_LENGTH; i++) {
printf("%02x", md5_value[i]);
}
printf("\n");
return 0;
}
```
需要注意的是,这里使用了一个缓冲区 BUFFER_SIZE 来分块读取文件,以避免一次性将整个文件读入内存,这也是计算大文件 MD5 值的常用方法。
阅读全文