首页 > 后端开发 > C++ > 正文

如何使用 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 位十六进制字符串。 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!