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

Bagaimanakah cara saya Mengira Hash MD5 Fail dalam C?

DDD
Lepaskan: 2024-11-11 17:38:03
asal
576 orang telah melayarinya

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
Salin selepas log masuk

Langkah 2: Tentukan Cincang MD5

Isytiharkan tatasusunan untuk menyimpan nilai cincang MD5:

unsigned char result[MD5_DIGEST_LENGTH];
Salin selepas log masuk

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);
Salin selepas log masuk

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);
Salin selepas log masuk

Langkah 5: Kira MD5 Hash

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

MD5((unsigned char*) file_buffer, file_size, result);
Salin selepas log masuk

Langkah 6: Cetak Hash MD5

Paparkan cincangan MD5 yang dikira sebagai perenambelasan digit:

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

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[]){ ... }
Salin selepas log masuk

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 Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan