The*_*ist 4 c c++ encryption cryptography public-key-encryption
我有一个对称密钥,我想使用 OpenSSL 使用 ECC 公钥对其进行加密。在其高级部分 EVP 中,OpenSSL提供了一种加密“信封”的解决方案,这正是我所需要的。
但是,我希望将这些分为不同的步骤,而不是像 OpenSSL 在 EVP 中提供的那样全部合而为一。我想控制我自己用 OpenSSL 加密对称密钥的位置,并使用我自己的 C++ 包装器加密消息,并将它们都放在我选择的格式中。
如何使用 OpenSSL 用公钥加密对称密钥而不用它加密消息?这是可行的吗?
我试图在提供的示例中使用零长度的纯文本,但它崩溃了。这可能吗?
如果没有,如何在没有 EVP 的情况下使用公钥加密EC_KEY?
与 RSA 不同,不能直接用 ECC 进行加密和解密。
执行此操作的首选方法是创建一个临时 ECC 密钥对,并使用您的私钥和接收者的公钥创建一个共享密钥来加密消息。然后您将加密的消息与您创建的 ECC 公钥一起发送。这种方案称为ECIES(椭圆曲线集成加密方案)。
您需要调用ECDH_compute_key以创建共享密钥,并将您的临时私钥和接收者的公钥以及指向您定义的密钥派生函数 (KDF) 的指针传递给它。最简单的 KDF 是 ECDH 计算输出的 x 坐标的散列。无论您使用什么方案,另一方都需要就正在使用的 KDF 达成一致。