我正在使用 Qt 开发一个应用程序,在某些时候,我需要加密和“签名”一个使用 SHA-256 提供私有证书的文件。我对 OpenSSL 和证书进行了大量阅读,但我无法理解如何在 C++ 代码中执行该过程。
本质上,我正在尝试与此命令等效:
openssl dgst -sha256 -out output.txt -sign certificate.pem input.txt
我已经探索了可用的 Qt 类,即以下内容:
- http://doc.qt.io/qt-5/qsslcertificate.html
- http://doc.qt.io/qt-5/qcryptographichash.html
- http://doc.qt.io/qt-5/qsslkey.html
QSslCertificate 类有一个摘要方法,这似乎是相关的。同样,我可以使用 QCryptographicHash::hash 获取文件的散列内容。但是我在任何地方都找不到任何提及使用包含 RSA 密钥的证书“签名”文件的内容。
我不能说我完全理解签名过程,但我听到的术语是使用 RSA 算法“屏蔽”生成的 SHA256 哈希 - 我假设这是通过 OpenSSL -sign 参数实现的。
如果 Qt 从未打算实现这一目标,那么最简单或典型的替代方案将是什么。我希望我需要包含另一个库?还是我只是潜入探索 OpenSSL 库并尝试将它们包含在我的项目中?https://www.openssl.org/docs/manmaster/man3/
考虑到这个加密过程在我的应用程序中会有多小,我很欣赏需要最少集成和学习的选项。