首頁  >  文章  >  後端開發  >  如何使用 OpenSSL 和 C 產生 SHA256 雜湊值?

如何使用 OpenSSL 和 C 產生 SHA256 雜湊值?

Patricia Arquette
Patricia Arquette原創
2024-10-27 01:19:30585瀏覽

How to Generate SHA256 Hashes with OpenSSL and C  ?

使用 OpenSSL 和 C 產生 SHA256 雜湊

雜湊是一種加密技術,用於產生資料的唯一指紋或摘要。對於 SHA256(安全雜湊演算法 2,256 位元),此摘要是 256 位元十六進位字串。 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>

產生的雜湊值現在儲存在雜湊數組中。

轉換為十六進位字串

最後,我們需要將二進位雜湊轉換為人類可讀的十六進位字串:

<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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn