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

Patricia Arquette
リリース: 2024-10-27 01:19:30
オリジナル
584 人が閲覧しました

How to Generate SHA256 Hashes with OpenSSL and C  ?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!