Rumah  >  Artikel  >  pembangunan bahagian belakang  >  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
Susan Sarandonasal
2024-10-26 18:39:30367semak imbas

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>

Untuk menggunakan kod ini, ikuti langkah berikut:

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

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:
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