如何通过ECDH加密和发送数据,只提供一个公钥(peerkey)?

时间:2012-06-10 15:16:13

标签: python m2crypto elliptic-curve

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

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

  1. 获取他/她自己的EC私钥
  2. 将此私钥与我的公钥合并,并计算共享密钥
  3. 使用密码和AES或其他对称密码加密消息
  4. 向我发送密文和派生的公钥(来自此私钥)。
  5. 但这是一个问题。我观察到只有当任一方基于相同的曲线参数生成其键时才存在成功的密钥交换。但除非我提供有关我的公钥所基于的曲线的其他信息,否则还有其他方法可以解决这个问题吗?公钥加载:

    M2Crypto.EC.load_pub_key([filename])
    

    返回EC.EC_pub实例。我认为关于曲线的信息应该隐藏在这个实例中的某个地方,但是我找不到。

    请指出我错过了什么,或者我的解决方案是错误的还是更简单,或任何其他建议。感谢。

0 个答案:

没有答案