python 椭圆曲线dh密钥交换_基于椭圆曲线的 Diffie-Hellman 密钥交换

椭圆曲线 Diffie-Hellman 算法概述

和常规的 Diffie-Hellman 密钥交换算法一样,现在 Alice 和 Bob 想要协商出一个整数,且信道是不安全的,有各种各样的窃听者。

首先,他们需要约定好一个椭圆曲线 $E(\mathbb{F}_p)$,以及一个基点 $P$. 现在 Alice 找一个 $n_A$,Bob 找一个 $n_B$,接下来 Alice 计算 $Q_A = n_A P$,Bob 计算 $Q_B = n_B P$.

完成之后,Alice 与 Bob 交换 $Q_A$ 和 $Q_B$,接下来 Alice 计算 $n_A Q_B$,Bob 计算 $n_BQ_A$,于是他俩算出了相同的点:$$n_A Q_B = (n_An_B)P = n_BQ_A$$

接下来,他们可以拿着这个点的 x 坐标,作为对称加密的密钥了。

一个例子

我们实际操作一个例子。假设 Alice 和 Bob 约定好使用椭圆曲线:$$p=3851, \quad E:Y^2 = X ^ 3 + 324 X + 1287, \quad P=(920, 303)$$

现在 Alice 选取了 $n_A = 1194$,BoB 选取了 $n_B = 1759$,分别计算 $Q_A, Q_B$:E = EllipticCurve(GF(3851), [324, 1287])

P = E(920, 303)

nA = 1194

QA = nA * P

nB = 1759

QB = nB * P

QA.x

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值