-1

我正在使用 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/

考虑到这个加密过程在我的应用程序中会有多小,我很欣赏需要最少集成和学习的选项。

4

1 回答 1

0

RSA_sign如果您要使用 OpenSSL 自己实现它,那么似乎有一个功能可以做到这一点。您可以手动获取文件的 SHA256(同样,使用 OpenSSL),RSA_sign并使用它RSA_verify来检查其有效性。

看这里...

编辑: 是一个关于如何从 PEM 证书中提取私钥数据的示例 - 当然,如果您的证书是 PEM 格式。PEM 基本上包括一个人类可读的标头,以及 base64 格式的以下关键数据。您可以检查您的证书文件是否以-----BEGIN RSA PRIVATE KEY-----一行开头。

于 2018-05-30T16:55:30.403 回答