"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > How to Generate SHA256 Hashes with OpenSSL and C++?

How to Generate SHA256 Hashes with OpenSSL and C++?

Published on 2024-11-08
Browse:223

How to Generate SHA256 Hashes with OpenSSL and C  ?

Generating SHA256 Hashes with OpenSSL and C

Hashing is a cryptographic technique used to generate a unique fingerprint, or digest, of data. In the case of SHA256 (Secure Hash Algorithm 2, 256-bit), this digest is a 256-bit hexadecimal string. SHA256 is commonly used to check data integrity, verify digital signatures, and store passwords securely.

In this article, we'll walk through how to generate SHA256 hashes using the OpenSSL library and C code.

Include OpenSSL Headers

To get started, ensure that you have the OpenSSL headers available to your C compiler. Typically, you can use the following include statement:

#include 

Create the SHA256 Context

Next, we need to create a SHA256 context to initialize the hashing process. We can do this with the following code:

SHA256_CTX context;
SHA256_Init(&context);

Update the SHA256 Context with Data

To generate a hash, we need to feed the data to be hashed into the SHA256 context. We can do this in chunks using the SHA256_Update() function:

SHA256_Update(&context, data, data_length);

Finalize the Hash

Once all the data has been fed to the SHA256 context, we can finalize the hash using the SHA256_Final() function:

unsigned char hash[SHA256_DIGEST_LENGTH];
SHA256_Final(hash, &context);

The resulting hash is now stored in the hash array.

Convert to a Hexadecimal String

Finally, we need to convert the binary hash to a human-readable hexadecimal string:

char hex_hash[65];
for (int i = 0; i x", hash[i]);
}
hex_hash[64] = 0;

Example Usage

Now that we have our functions in place, we can use them to generate SHA256 hashes as needed. For example:

// 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);

This will generate a SHA256 hash for the given string or file and store it in the corresponding buffer.

Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3