OpenSSL と C を使用した SHA256 ハッシュの生成
ハッシュは、データの一意のフィンガープリント、つまりダイジェストを生成するために使用される暗号化手法です。 SHA256 (セキュア ハッシュ アルゴリズム 2、256 ビット) の場合、このダイジェストは 256 ビットの 16 進文字列です。 SHA256 は、データの整合性のチェック、デジタル署名の検証、パスワードの安全な保存に一般的に使用されます。
この記事では、OpenSSL ライブラリと C コードを使用して SHA256 ハッシュを生成する方法を説明します。
OpenSSL ヘッダーを含める
まず、C コンパイラーで OpenSSL ヘッダーを使用できることを確認してください。通常、次の include ステートメントを使用できます。
<code class="cpp">#include <openssl/sha.h></code>
SHA256 コンテキストの作成
次に、ハッシュ プロセスを初期化するために SHA256 コンテキストを作成する必要があります。これは次のコードで実行できます:
<code class="cpp">SHA256_CTX context; SHA256_Init(&context);</code>
データで SHA256 コンテキストを更新します
ハッシュを生成するには、ハッシュするデータをフィードする必要がありますSHA256 コンテキストに追加します。 SHA256_Update() 関数を使用して、これをチャンクで実行できます。
<code class="cpp">SHA256_Update(&context, data, data_length);</code>
ハッシュを完成させます
すべてのデータが SHA256 コンテキストに供給されたら、 SHA256_Final() 関数を使用してハッシュを完成させることができます:
<code class="cpp">unsigned char hash[SHA256_DIGEST_LENGTH]; SHA256_Final(hash, &context);</code>
結果のハッシュはハッシュ配列に保存されます。
16 進文字列に変換します
最後に、バイナリ ハッシュを人間が判読できる 16 進文字列に変換する必要があります。
<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>
使用例
これで関数が完成しました。必要に応じて、それらを使用して SHA256 ハッシュを生成できます。例:
<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>
これにより、指定された文字列またはファイルの SHA256 ハッシュが生成され、対応するバッファーに保存されます。
以上がOpenSSL と C を使用して SHA256 ハッシュを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。