C에서 파일의 MD5 해시를 가져오는 것은 데이터 보안 및 무결성 검사에 필수적입니다. 이 기사에서는 파일의 MD5 해시를 계산하고 표시할 수 있는 간단한 C 구현을 살펴보겠습니다.
이 구현은 OpenSSL 라이브러리를 활용하여 MD5 계산을 수행합니다. 여기에는 다음 기능이 포함되어 있습니다.
코드는 지정된 파일을 열고 mmap()을 사용하여 메모리에 매핑하는 것으로 시작됩니다. 이를 통해 응용 프로그램은 파일을 메모리의 버퍼로 사용하여 효율적인 MD5 계산을 촉진할 수 있습니다. 그런 다음 MD5() 함수는 해시를 계산하여 미리 정의된 배열에 저장합니다.
마지막으로 print_md5_sum() 함수는 MD5 해시를 16진수로 변환하여 파일 이름과 함께 인쇄합니다. 이를 통해 파일 무결성을 쉽게 확인하고 비교할 수 있습니다.
코드는 다음과 같습니다.
#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; }
위 내용은 C의 파일에서 MD5 해시를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!