Openssl入门第七课--C代码实现dgst sha256 sign效果

本文详细介绍了如何使用OpenSSL的dgstsha256sign命令,通过SHA-256哈希和RSA私钥生成数字签名的过程,包括整体架构、技术名词解析和示例命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

dgst sha256 sign概要

openssl dgst -sha256 -sign priv_2048.pem -out Script_sig.bin Wait_sign.bin

功能介绍:使用SHA-256哈希算法为文件生成数字SHA值并做RSA数字签名

整体架构流程

openssl dgst -sha256 -sign priv_2048.pem -out Script_sig.bin Wait_sign.bin

1.openssl dgst命令会先计算输入文件的SHA-256哈希值。等同于命令行openssl dgst -sha256 Wait_sign.bin

2. 对SHA-256哈希值进行PKC#1填充

3.然后使用指定的私钥对PKC#1填充值进行加密,生成数字签名。

技术名词解释

openssl dgst是 OpenSSL 命令行工具中的一个子命令,用于计算给定数据的摘要(digest)。这里的“摘要”通常指的是数据的哈希值,它是对原始数据的一种固定长度的表示。通过使用哈希函数,可以生成一个简短的、唯一的标识符,该标识符表示了原始数据的内容。哈希函数具有许多重要的安全特性,比如确定性(相同的输入总是产生相同的输出)、雪崩效应(输入的小变化会导致输出的大变化)以及单向性(从哈希值难以逆向计算出原始数据)。

-sha256:sha256 选项,指定使用 SHA-256 算法来计算Wait_sign.bin的哈希值。

-sign:sign 选项用于生成一个数字签名。这个选项告诉 OpenSSL 使用指定的私钥对数据的 SHA-256 哈希值进行加密,从而生成一个数字签名。

priv_2048.pem:指定使用 private_key.pem 文件中的私钥来对哈希值进行加密,私钥的类型决定签名算法,本次测试使用的是RSA格式的私钥。

-out Script_sig.bin指定将生成的签名保存到Script_sig.bin文件中。

Wait_sign.bin 是要签名的数据。

Note:

在 OpenSSL 中,当你使用 openssl dgst -sha256 -sign 命令时,实际上签名算法的选择取决于你使用的私钥类型。如果你有一个 RSA 私钥,那么 OpenSSL 会默认使用 RSA 算法来生成签名。如果你有一个 ECDSA 私钥,那么会使用 ECDSA 算法。因此,签名的算法并不是由秘钥的格式直接决定的,而是由秘钥的类型决定的。

具体到你的命令:openssl dgst -sha256 -sign priv_2048.pem -out Script_sig.bin Wait_sign.bin

这里的 priv_2048.pem 文件应该包含一个私钥。OpenSSL 会读取这个文件并确定私钥的类型。如果priv_2048.pem 包含的是一个 RSA 私钥,那么 OpenSSL 就会使用 RSA 算法来生成签名。

你可以通过查看私钥文件的内容来确定私钥的类型。

小结

使用了C语言代码实现了和命令行openssl dgst -sha256 -sign一致的结果,不过受限于博主的时间,只探索了单次计算HSAH值的代码SHA256。后续博主可能考虑使用多次计算HASH值的代码。

博主私人Gitgee仓库->Aaron / OPENSSL有上传了以上的工程demo.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值