>백엔드 개발 >C++ >C를 사용하여 파일의 MD5 해시를 계산하는 방법은 무엇입니까?

C를 사용하여 파일의 MD5 해시를 계산하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-27 07:19:08886검색

How to Calculate the MD5 Hash of a File using C  ?

C에서 파일의 MD5 해시 얻기

파일의 MD5 해시를 확인하려면 다음 단계를 활용할 수 있습니다.

1단계: 파일 설명자 설정 및 파일 결정 크기

open() 함수를 사용하여 대상 파일에 대한 파일 설명자를 얻습니다. 그런 다음 fstat() 함수를 활용하여 파일 크기를 확인합니다.

2단계: 파일을 메모리에 매핑

mmap() 함수를 사용하여 파일을 메모리에 매핑합니다. 읽기 전용 액세스를 제공하는 메모리입니다. 이 매핑을 사용하면 파일 내용에 직접 액세스할 수 있습니다.

3단계: MD5 해시 계산

OpenSSL 라이브러리를 활용하여 MD5() 함수를 호출하여 MD5 해시를 계산합니다.

4단계: 다음에서 파일 매핑 해제 메모리

MD5 해시가 계산되면 munmap() 함수를 사용하여 메모리에서 파일 매핑을 해제합니다. 이 단계에서는 파일 매핑이 해제됩니다.

5단계: 파일 이름과 함께 MD5 해시 인쇄

참조용 해당 파일 이름과 함께 계산된 MD5 해시를 표시합니다.

다음 C 코드 조각은 이 프로세스를 보여줍니다.

#include <openssl/md5.h>

void computeMD5(const char* filename) {
  // Establish file descriptor and determine file size
  int fd = open(filename, O_RDONLY);
  struct stat statbuf;
  fstat(fd, &statbuf);
  size_t file_size = statbuf.st_size;

  // Map file into memory
  char* file_buffer = (char*)mmap(0, file_size, PROT_READ, MAP_SHARED, fd, 0);

  // Compute MD5 hash
  unsigned char md5[MD5_DIGEST_LENGTH];
  MD5((unsigned char*)file_buffer, file_size, md5);

  // Unmap file from memory
  munmap(file_buffer, file_size);

  // Print MD5 hash with file name
  printf("MD5 hash of '%s': ", filename);
  for (int i = 0; i < MD5_DIGEST_LENGTH; i++) {
    printf("%02x", md5[i]);
  }
  printf("\n");
}

위 내용은 C를 사용하여 파일의 MD5 해시를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.