ホームページ  >  記事  >  バックエンド開発  >  OpenSSL と C を使用して SHA256 ハッシュを生成するにはどうすればよいですか?

OpenSSL と C を使用して SHA256 ハッシュを生成するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-30 00:58:02762ブラウズ

How can you generate SHA256 hashes using OpenSSL and C  ?

OpenSSL と C を使用して SHA256 を生成する

この記事では、OpenSSL ライブラリと C を使用して SHA256 ハッシュを生成する方法について説明します。 SHA256 は、任意のデータの一意の 256 ビット ダイジェストを生成する、広く使用されている暗号化ハッシュ関数です。

実装

まず、OpenSSL 開発が確実に行われるようにする必要があります。ライブラリとヘッダーはシステムで利用できます。必要なヘッダーを含めた後、実装に進むことができます:

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

// Function to generate SHA256 hash of a string
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;
}</code>

ファイルから SHA256 ハッシュを生成するには、次の関数を使用します:

<code class="cpp">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>

これらの関数を使用するには、入力文字列またはファイル パスを引数として渡すだけです。生成された SHA256 ハッシュは、提供された出力バッファーに返されます。

以上がOpenSSL と C を使用して SHA256 ハッシュを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。