Mendapatkan cincangan MD5 bagi fail dalam C adalah penting untuk keselamatan data dan semakan integriti. Dalam artikel ini, kami akan meneroka pelaksanaan C mudah yang boleh mengira dan memaparkan cincangan MD5 fail.
Pelaksanaan memanfaatkan perpustakaan OpenSSL untuk melaksanakan pengiraan MD5. Ia termasuk fungsi untuk:
Kod bermula dengan membuka fail yang ditentukan dan memetakannya ke dalam memori menggunakan mmap(). Ini membolehkan aplikasi berfungsi dengan fail sebagai penimbal dalam ingatan, memudahkan pengiraan MD5 yang cekap. Fungsi MD5() kemudian mengira cincang dan menyimpannya dalam tatasusunan yang telah ditetapkan.
Akhir sekali, fungsi print_md5_sum() menukar cincang MD5 kepada digit heks dan mencetaknya bersama nama fail. Ini membolehkan pengesahan mudah dan perbandingan integriti fail.
Ini kodnya:
#include <openssl/md5.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/mman.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> unsigned char result[MD5_DIGEST_LENGTH]; // Print the MD5 sum as hex-digits. void print_md5_sum(unsigned char *md) { int i; for (i = 0; i < MD5_DIGEST_LENGTH; i++) { printf("%02x", md[i]); } } // Get the size of the file by its file descriptor unsigned long get_size_by_fd(int fd) { struct stat statbuf; if (fstat(fd, &statbuf) < 0) exit(-1); return statbuf.st_size; } int main(int argc, char *argv[]) { int file_descript; unsigned long file_size; char *file_buffer; if (argc != 2) { printf("Must specify the file\n"); exit(-1); } printf("using file:\t%s\n", argv[1]); file_descript = open(argv[1], O_RDONLY); if (file_descript < 0) exit(-1); file_size = get_size_by_fd(file_descript); printf("file size:\t%lu\n", file_size); file_buffer = mmap(0, file_size, PROT_READ, MAP_SHARED, file_descript, 0); MD5((unsigned char *)file_buffer, file_size, result); munmap(file_buffer, file_size); print_md5_sum(result); printf(" %s\n", argv[1]); return 0; }
Atas ialah kandungan terperinci Bagaimana untuk Mengira Hash MD5 daripada Fail dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!