gpt4 book ai didi

c++ - OpenSSL : Encrypt a symmetric key with an ECC public key

转载 作者:行者123 更新时间:2023-12-02 16:17:23 24 4
gpt4 key购买 nike

我有一个对称 key ,我想使用 OpenSSL 使用 ECC 公钥对其进行加密。在其高级部分,EVP,OpenSSL offers a solution加密“信封”,这正是我所需要的。

但是,我希望将这些分为单独的步骤,而不是像 OpenSSL 在 EVP 中提供的那样全部集中在一起。我希望能够控制自己使用 OpenSSL 加密对称 key 的位置,并使用我自己的 C++ 包装器加密消息,并将它们都采用我选择的格式。

如何使用 OpenSSL 用公钥加密对称 key 而不同时加密消息?这可行吗?

我尝试在提供的示例中使用零长度明文,但它崩溃了。这可能吗?

如果没有,如何使用公钥进行加密而不使用 EC_KEY 的 EVP?

最佳答案

与 RSA 不同,加密和解密不能直接使用 ECC 进行。

执行此操作的首选方法是创建临时 ECC key 对,并使用您的私钥和接收者的公钥创建共享 key 来加密消息。然后,您将加密的消息与您创建的 ECC 公钥一起发送。该方案称为 ECIES(椭圆曲线集成加密方案)。

您需要调用 ECDH_compute_key 来创建共享 key ,并将您的临时私钥和接收者的公钥以及指向您定义的 key 派生函数 (KDF) 的指针传递给它。最简单的 KDF 是 ECDH 计算输出的 x 坐标的哈希值。无论您使用什么方案,另一方都需要就所使用的 KDF 达成一致。

关于c++ - OpenSSL : Encrypt a symmetric key with an ECC public key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58940945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com