【问题标题】:How to encrypt file by public key如何通过公钥加密文件
【发布时间】:2018-03-02 20:42:59
【问题描述】:

我需要加密和解密文件(在 QT SDK 中)。 用私钥加密。 用公钥解密。

我在网上找不到任何可用的示例。你能把我推到正确的方向吗?

【问题讨论】:

  • PKI 以相反的方式工作。私钥用于解密,公钥用于加密。从理论上讲,数学允许相反的操作,但结果将不再是密码安全
  • 感谢您的回复...我找到了任何可用的解决方案。我会在我的回答中添加更多信息。
  • 注意,要加密的数据长度必须小于密钥的大小。这通常意味着非对称密钥加密不是文件加密的解决方案。如果需要非对称密钥对,则混合加密是解决方案。还要考虑对称密钥加密是否足够。
  • 感谢您的回答。你能告诉我更多吗?我不明白你的意思。特别是 - 文件(要加密的长度)必须小于密钥的长度。就我而言,这不是问题,因为我将加密大约 200 个字符的文件。但是如果我不小心需要加密一个 4MB 的文件,那我就不能使用非对称加密了吗?

标签: qt encryption


【解决方案1】:

我研究如何在 QT 中使用证书。 问题是,它取决于 OpenSSL 版本、windows / linux 版本和 32/64 位。

我使用的是 Windows minGW/32,MSVC2015/32/64 版本。

第一个: 我在 youtube 上使用分步教程“带有 OpenSSL 的 RSA 和 AES Primer”(项目 150-153)非常感谢 Bryan。 https://www.youtube.com/watch?v=LATSg00HaXk

第二个: 布赖恩在 linux 上工作。在 Windows 上,它的库名称有问题。

  1. 您必须下载或编译 OpenSSL 库。 我使用从https://slproweb.com/products/Win32OpenSSL.html下载 只有 OpenSSL-Win32.v1.0.2n 与教程结合使用。 我没有尝试自己的构建。非常感谢托马斯。

  2. 您必须将标头和库添加到您的 pro 文件中,如下所示:

LIBS += -LD:/Develop/openssl/OpenSSL-Win32.1.0.2.n.full -llibeay32 
LIBS += -LD:/Develop/openssl/OpenSSL-Win32.1.0.2.n.full -llibssl32 
LIBS += -LD:/Develop/openssl/OpenSSL-Win32.1.0.2.n.full -lssleay32 
INCLUDEPATH += D:/Develop/openssl/OpenSSL-Win32.1.0.2.n.full/include
  1. 您已经注意到,库在 Windows 中的命名方式与在 linux 中不同。 同时在linux中你必须添加libcrypto.a和libssl.a,windows中的名称完全不同(uáááá为什么???)libeay32,libssl32,ssleay32。

4。 如果您想使用 64 位版本,您必须为 MSVC2015/17 自己构建并使用它。我暂时不测试这一步。

【讨论】:

    猜你喜欢
    • 2017-01-04
    • 2018-04-26
    • 2011-03-30
    • 1970-01-01
    • 2017-07-27
    • 2020-06-26
    • 1970-01-01
    • 2012-04-11
    • 2013-04-05
    相关资源
    最近更新 更多