Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah cara saya Mengira Hash MD5 Fail dalam C?

Bagaimanakah cara saya Mengira Hash MD5 Fail dalam C?

DDD
DDDasal
2024-11-11 17:38:03543semak imbas

How do I Calculate the MD5 Hash of a File in C  ?

Mendapatkan MD5 Hash daripada Fail dalam C : Panduan Langkah demi Langkah

Dalam C , pengiraan cincang MD5 bagi fail ialah tugas penting untuk pengesahan integriti data dan penghantaran selamat. Untuk memudahkan proses ini, mari kita selami pelaksanaan praktikal.

Langkah 1: Pautan ke Perpustakaan OpenSSL

Untuk pelaksanaan ini, anda memerlukan perpustakaan OpenSSL, yang menyediakan algoritma cincang MD5. Gunakan baris berikut semasa penyusunan:

gcc md5.c -o md5 -lssl

Langkah 2: Tentukan Cincang MD5

Isytiharkan tatasusunan untuk menyimpan nilai cincang MD5:

unsigned char result[MD5_DIGEST_LENGTH];

Langkah 3: Buka Fail dan Dapatkan Failnya Saiz

int file_descript = open(argv[1], O_RDONLY);
unsigned long file_size = get_size_by_fd(file_descript);

Langkah 4: Petakan Fail ke dalam Memori

Untuk memproses fail besar dengan cekap, petakan kandungan fail ke dalam memori menggunakan mmap():

file_buffer = mmap(0, file_size, PROT_READ, MAP_SHARED, file_descript, 0);

Langkah 5: Kira MD5 Hash

Gunakan fungsi MD5() untuk mengira nilai cincang penimbal fail yang dipetakan:

MD5((unsigned char*) file_buffer, file_size, result);

Langkah 6: Cetak Hash MD5

Paparkan cincangan MD5 yang dikira sebagai perenambelasan digit:

print_md5_sum(result);
printf("  %s\n", argv[1]);

Coretan Kod Lengkap:

#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <openssl/md5.h>

unsigned char result[MD5_DIGEST_LENGTH];

void print_md5_sum(unsigned char* md){ ... }
unsigned long get_size_by_fd(int fd){ ... }

int main(int argc, char *argv[]){ ... }

Kod ini memberi anda pelaksanaan menyeluruh untuk mengira cincangan MD5 fail dalam C .

Atas ialah kandungan terperinci Bagaimanakah cara saya Mengira Hash MD5 Fail dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn