Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menjana Hashes SHA256 dengan OpenSSL dan C : Penyelesaian untuk Fungsi yang Hilang?

Bagaimana untuk Menjana Hashes SHA256 dengan OpenSSL dan C : Penyelesaian untuk Fungsi yang Hilang?

Susan Sarandon
Lepaskan: 2024-10-26 18:39:30
asal
530 orang telah melayarinya

How to Generate SHA256 Hashes with OpenSSL and C  :  A Solution for Missing Functions?

Menjana Hash SHA256 dengan OpenSSL dan C

Apabila ditugaskan untuk mencipta cincang menggunakan SHA256 dengan OpenSSL dan C , memahami keupayaan perpustakaan menjadi penting . Satu contoh sedemikian menghadapi masalah dengan kehilangan fungsi OpenSSL walaupun menyertakan fail pengepala yang diperlukan dan laluan binaan. Coretan kod berikut menggambarkan penyelesaian:

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

void sha256_string(char *string, char outputBuffer[65]) {
  unsigned char hash[SHA256_DIGEST_LENGTH];
  SHA256_CTX sha256;
  SHA256_Init(&sha256);
  SHA256_Update(&sha256, string, strlen(string));
  SHA256_Final(hash, &sha256);
  int i = 0;
  for (i = 0; i < SHA256_DIGEST_LENGTH; i++) {
    sprintf(outputBuffer + (i * 2), "%02x", hash[i]);
  }
  outputBuffer[64] = 0;
}

int sha256_file(char *path, char outputBuffer[65]) {
  FILE *file = fopen(path, "rb");
  if (!file) return -534;
  unsigned char hash[SHA256_DIGEST_LENGTH];
  SHA256_CTX sha256;
  SHA256_Init(&sha256);
  const int bufSize = 32768;
  unsigned char *buffer = malloc(bufSize);
  int bytesRead = 0;
  if (!buffer) return ENOMEM;
  while ((bytesRead = fread(buffer, 1, bufSize, file))) {
    SHA256_Update(&sha256, buffer, bytesRead);
  }
  SHA256_Final(hash, &sha256);
  sha256_hash_string(hash, outputBuffer);
  fclose(file);
  free(buffer);
  return 0;
}</code>
Salin selepas log masuk

Untuk menggunakan kod ini, ikuti langkah berikut:

<code class="cpp">static unsigned char buffer[65];
sha256("string", buffer);
printf("%s\n", buffer);</code>
Salin selepas log masuk

Pendekatan ini menjana cincang SHA256 dengan berkesan menggunakan OpenSSL dan C , menyelesaikan laluan termasuk isu yang dihadapi sebelum ini.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Hashes SHA256 dengan OpenSSL dan C : Penyelesaian untuk Fungsi yang Hilang?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan