Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menjana Hashes SHA256 dengan OpenSSL dan C?

Bagaimana untuk Menjana Hashes SHA256 dengan OpenSSL dan C?

Patricia Arquette
Patricia Arquetteasal
2024-10-27 01:19:30670semak imbas

How to Generate SHA256 Hashes with OpenSSL and C  ?

Menjana Hash SHA256 dengan OpenSSL dan C

Hashing ialah teknik kriptografi yang digunakan untuk menjana cap jari yang unik, atau mencerna, data. Dalam kes SHA256 (Secure Hash Algorithm 2, 256-bit), ringkasan ini ialah rentetan heksadesimal 256-bit. SHA256 biasanya digunakan untuk menyemak integriti data, mengesahkan tandatangan digital dan menyimpan kata laluan dengan selamat.

Dalam artikel ini, kami akan membincangkan cara menjana cincang SHA256 menggunakan perpustakaan OpenSSL dan kod C.

Sertakan Pengepala OpenSSL

Untuk bermula, pastikan anda mempunyai pengepala OpenSSL tersedia untuk pengkompil C anda. Biasanya, anda boleh menggunakan pernyataan sertakan berikut:

<code class="cpp">#include <openssl/sha.h></code>

Buat Konteks SHA256

Seterusnya, kita perlu mencipta konteks SHA256 untuk memulakan proses pencincangan. Kita boleh melakukannya dengan kod berikut:

<code class="cpp">SHA256_CTX context;
SHA256_Init(&context);</code>

Kemas kini Konteks SHA256 dengan Data

Untuk menjana cincang, kami perlu menyuap data untuk dicincang ke dalam konteks SHA256. Kita boleh melakukan ini dalam ketulan menggunakan fungsi SHA256_Update():

<code class="cpp">SHA256_Update(&context, data, data_length);</code>

Memuktamadkan Hash

Setelah semua data telah dimasukkan ke konteks SHA256, kami boleh memuktamadkan cincang menggunakan fungsi SHA256_Final():

<code class="cpp">unsigned char hash[SHA256_DIGEST_LENGTH];
SHA256_Final(hash, &context);</code>

Cincang yang terhasil kini disimpan dalam tatasusunan cincang.

Tukar kepada Rentetan Heksadesimal

Akhir sekali, kita perlu menukar cincang binari kepada rentetan perenambelasan yang boleh dibaca manusia:

<code class="cpp">char hex_hash[65];
for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) {
    sprintf(hex_hash + (i * 2), "%02x", hash[i]);
}
hex_hash[64] = 0;</code>

Contoh Penggunaan

Sekarang kita mempunyai fungsi kita di tempat, kita boleh menggunakannya untuk menjana cincang SHA256 mengikut keperluan. Contohnya:

<code class="cpp">// Generate a hash for a string
char hash_string[65];
SHA256_string("Hello, world!", hash_string);

// Generate a hash for a file
char hash_file[65];
SHA256_file("path/to/file", hash_file);</code>

Ini akan menjana cincang SHA256 untuk rentetan atau fail yang diberikan dan menyimpannya dalam penimbal yang sepadan.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Hashes SHA256 dengan OpenSSL dan 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