2

我正在编写一个需要非对称加密的程序。我的方法是使用 Python 的 M2Crypto,我选择了 ECDH 作为算法。但是,我也希望该过程像 RSA 一样简单,它只需要我们接收器的公钥。ECDH 不是。它的公钥似乎必须首先与发送者自己的公钥结合,从而计算共享秘密并完成所有工作。

不管效率如何,我确实想要这样的解决方案,这样如果有人想给我发消息,我的 EC 公钥就会被发布,发件人必须:

  1. 获取他/她自己的 EC 私钥
  2. 把这个私钥和我的公钥结合起来,计算一个共享的秘密
  3. 使用秘密和 AES 或其他对称密码加密消息
  4. 向我发送密文和派生的公钥(来自此私钥)。

但这里有一个问题。我观察到只有当任何一方基于相同的曲线参数生成他们的密钥时,才存在成功的密钥交换。但是,除非我提供有关我的公钥所基于的曲线的其他信息,否则还有其他方法可以解决这个问题吗?公钥加载有:

M2Crypto.EC.load_pub_key([filename])

并返回一个 EC.EC_pub 实例。我认为关于曲线的信息应该隐藏在这种情况下的某个地方,但我还没有找到。

请指出我遗漏的内容,或者我的解决方案是否错误或可以更简单,或任何其他建议。谢谢。

4

0 回答 0