使用证书(RSA-SHA256)签署文件需要什么C ++项目

时间:2018-05-30 16:41:27

标签: c++ qt openssl rsa-sha256

我正在使用Qt开发应用程序,并且在某些时候,我被要求使用SHA-256加密并“签署”提供私有证书的文件。我在OpenSSL和证书上做了相当多的读数,但我无法理解如何在C ++代码中执行该过程。

本质上,我正在尝试相当于这个命令:

openssl dgst -sha256 -out output.txt -sign certificate.pem input.txt

我已经探索了可用的Qt类,即:

QSslCertificate类有一个摘要方法,似乎是相关的。同样,我可以使用QCryptographicHash :: hash获取文件的散列内容。但在任何地方我都找不到使用包含RSA密钥的证书“签名”文件的任何提及。

我不能说我完全理解签名过程,但我听到的术语是使用RSA算法“屏蔽”生成的SHA256哈希 - 我假设是通过OpenSSL -sign参数实现的。

如果Qt从未打算实现这一目标,那么最简单或最典型的替代方案是什么。我希望我需要包含另一个库?或者我只是潜入探索OpenSSL库并尝试将它们包含在我的项目中? https://www.openssl.org/docs/manmaster/man3/

鉴于此加密过程在我的应用程序中会有多小,我会感谢一个需要最少集成和学习的选项。

1 个答案:

答案 0 :(得分:0)

如果您自己使用OpenSSL实现它,似乎有一个函数RSA_sign正是如此。您可以手动获取文件的SHA256(再次使用OpenSSL),RSA_sign,并使用RSA_verify检查其有效性。

See here...

修改 Here是如何从PEM证书中提取私钥数据的示例 - 当然,以防您的证书采用PEM格式。 PEM基本上包括一个人类可读的标题,并遵循base64格式的关键数据。您可以检查证书文件是否以-----BEGIN RSA PRIVATE KEY-----行开头。