【发布时间】:2020-03-15 09:07:07
【问题描述】:
我有一个对称密钥,我想使用 OpenSSL 使用 ECC 公钥对其进行加密。在其高级部分,EVP,OpenSSL offers a solution 加密“信封”,这正是我所需要的。
但是,我希望将这些分成单独的步骤,而不是像 OpenSSL 在 EVP 中提供的那样全部合二为一。我想控制我自己使用 OpenSSL 加密对称密钥的位置,并使用我自己的 C++ 包装器加密消息,并将它们都放在我选择的格式中。
如何使用 OpenSSL 使用公钥加密刚刚对称的密钥,而不用同时加密消息?这可行吗?
我尝试在提供的示例中使用长度为零的纯文本,但它崩溃了。这可能吗?
如果没有,我如何使用没有 EVP 的公共密钥和 EC_KEY 进行加密?
【问题讨论】:
-
不完全确定你为什么要走这条路,但
RSA_public_encrypt应该做你想做的事,假设你使用的是 RSA 密钥。这是一个直接的 API。虽然这对您来说并不重要,因为您只是在加密一个简单的会话密钥,但始终值得一提的是确保数据大小至少比密钥的模数大小低 11 个字节。 -
@WhozCraig 对不起,我应该说清楚我会更新这个问题。我希望使用 ECC 进行加密(我的密钥类型是
EC_KEY)。 ECC是否有等效功能? -
如果有,我没见过。我不使用 ECC,因为坦率地说,直到今天我仍然无法理解临时密钥生成、hmacs 等。几年前我开始研究它们时,我读到的第一件事就是“ECC 是' 不是真的用于加密/解密;但是有一些算法可以使用 ECC 来做“我的头开始膨胀。希望我能帮助你。对不起。
-
@WhozCraig 不幸的是,这不是我的选择。密钥已经存在,我必须使用它们进行加密。无论如何谢谢:-)
-
您是在尝试使用 ECC 进行加密,还是尝试使用 ECC 来生成共享密钥,即 ECDH (Elliptic-Curve Diffie-Hellman)?
标签: c++ c encryption cryptography public-key-encryption