椭圆加密(1)
放假!!!
开始高强度学习:)
今天看看椭圆曲线加密
实数域上的椭圆曲线:
在密码学的说法中,椭圆可以这么表示:
E:y2=ax3+ bx2+cx+d
(虽然这根本就不是椭圆。。。)
大概长这样:
在椭圆曲线上,我们可以定义一套运算法则
加法:
对于椭圆曲线上的两点A,B,A+B=C定义为:AB连线与椭圆曲线的交点关于X轴的对称点
二倍运算:
特殊的,当A=B时,A+B=A+A=2A,定义为过A点的切线与椭圆的交点的对称点
正负取反:
对椭圆曲线上的点A,取它与X轴的对称点,记为-A
无穷远点:
令A与-A想加,可以认为A与-A连线与椭圆曲线交于无穷远点
利用这些运算,可以算出A,2A,3A(即A+2A),4A乃至于xA等等
由这个算法,可以看出,假如已知A与k,求kA是一件容易的事情,但是假如知道A与kA,求k是一件很难的事情,这就是椭圆曲线加密算法背后的数学原理
有限域上的椭圆曲线:
但是,椭圆曲线加密算法利用的椭圆曲线并非如上面一样的定义在实数域上的函数,而是定义在有限域上的点集
首先定义有限域GF(p),其中p为一个质数,GF(p)里包含0到p-1之中的所有整数
在这上面的椭圆曲线定义为:
y² ≡ x³ + x + 1 (mod p)
(如p=23时,7² ≡ 1³ + 1 + 1 ≡ 3 (mod 23),则(1,7)为曲线上的点)
它大概长这样:
在这上面的加法定义如下:
对有限域GF(p)上的椭圆曲线y² = x³ + ax + b
若P(Xp, Yp), Q(Xq, Yq),且P≠-Q,则R(Xr,Yr) = P+Q 由如下规则确定:
Xr = (λ² - Xp - Xq) mod p
Yr = (λ(Xp - Xr) - Yp) mod p
其中λ = (Yq - Yp)/(Xq - Xp) mod p(若P≠Q), λ = (3Xp² + a)/2Yp mod p(若P=Q)
这里的除法算法如下:
设a/b mod n=x
则a mod n = bx mod n
由此解得x
由此可以算出求ka的算法
椭圆曲线加密算法:
在已知G的情况下,
假如已知k,求kG比较容易;但是假如已知kG,想求k很难
所以可以利用此特性开发出一套非对称加密算法
具体加密算法如下:
首先已知椭圆曲线的参数p、a、b以及点G
(该曲线为y² ≡ x³ + ax + b (mod p))
私钥为k
公钥为kG
公钥加密:选择随机数r,将消息M生成密文C,该密文是一个点对,即: C = {rG, M+r(kG)}
私钥解密:M + r(kG)- k(rG)= M
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~