news 2026/4/23 12:27:15

椭圆曲线里标量乘法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
椭圆曲线里标量乘法

这张图在讲椭圆曲线里标量乘法(scalar multiplication):给定一个点 P 和整数 n,要算 nP(把点 P 在群里“加”自己 n次)。核心技巧就是Double-and-Add(倍加法)

  • Double(倍点):Q←2Q(等价于 Q+Q)

  • Add(加点):若某一位需要,就把当前的 Q 加进结果:R←R+Q


1)原理一句话

把整数 n 写成二进制:

那么

所以你只需要从 P,2P,4P,8P,…这些“2 的幂倍”里,把二进制位为 1 的那些挑出来加起来即可。
正好可以用“不断倍点”得到:P→2P→4P→8P→⋯

2)图里的例子:n=151

图上写 “Imagine, n=151, we want to compute nP”
先把 151 写成二进制:

  • 也就是

因此:

图中气泡也在强调这点:已经算到的中间结果

16P+4P+2P+P

“离最终结果很近”,只差再把 128P 加上去。


3)图中步骤在做什么(从低位到高位的做法)

图里的流程是典型的“从最低位开始(LSB-first)”:

  • 一开始当前倍数 Q=P,结果 R=0

  • 看二进制最低位是 1,就把 Q 加进 R

  • 然后把 Q倍点(变成下一档:2P,4P,8P,…)

  • 下一位是 1 就加,不是 1 就跳过

对照图里列出的动作:

  1. 取 P(此时 Q=P)

  2. 加 P:R=P(因为最低位

  3. 倍点:Q=2P

  4. 加 2P:R=2P+P(

  5. 倍点:Q=4P

  6. 加 4P:R=4P+2P+P(

  7. 倍点:Q=8P

  8. 不加 8P:R不变(因为

  9. 倍点:Q=16P

  10. 加 16:R=16P+4P+2P+P(

后面继续倍点到 32P,64P,128P,对应位是 0、0、1,最终再把 128P 加进去,就得到 151P。


4)为什么它快?

如果你用“朴素加法”算 151P,要加 150 次点加法。
Double-and-Add 用二进制只需要:

  • 倍点次数:大约是位数(这里 151 是 8 位,倍点约 7 次)

  • 加点次数:大约是二进制里 1 的个数(popcount)减 1(这里有 5 个 1,加点约 5 次)

所以复杂度从 O(n)变成 O(log⁡n),这就是椭圆曲线能高效做签名/密钥交换的关键之一。


5)一个非常直观的类比

把 nP 想成“用很多张面额为 1,2,4,8,16,… 的钞票凑钱”:

  • 倍点:相当于把面额翻倍(1→2→4→8…)

  • 加点:相当于某一位是 1,就把这张钞票放进钱包(累加到结果)

这张图是在用几何方式把椭圆曲线的“标量乘法”拆成一连串倍点(doubling)来做——也就是把

变成“不断翻倍”的过程:G→2G→4G→8G→⋯

图里每种颜色其实在表达固定含义:

  • 红色曲线:椭圆曲线 E

  • 蓝色线段:用于群运算的直线(这里主要是“切线”)

    • 做倍点时,用的是“过该点的切线”

  • 绿色竖箭头:关于 x 轴的镜像(取负号)

    • 若点是 (x,y),那么 −P=(x,−y)(在有限域里是


1) 图中一步步在算什么:G→2G→4G→8G

A. 从 G 得到 2G

  1. 在点G处画切线(图中上方那条蓝线的方向)。

  2. 这条切线会再次交椭圆曲线于一个点,图上标成−2G(注意是负号)。

  3. 再沿绿色竖箭头把 −2G关于 x 轴翻到对称点,就得到2G

这就是倍点公式的几何版本:


B. 从 2G 得到 4G

同样套路:

  1. 2G处画切线(图中那条斜着的大蓝线)。

  2. 切线再次交曲线于−4G(图上标的 −4G)。

  3. 绿色竖箭头把 −4G翻过去得到4G


C. 从 4G 得到 8G

  1. 4G处画切线(图下方较短的蓝线)。

  2. 得到交点−8G(图上标的 −8G)。

  3. 绿色竖箭头翻过去得到8G


2) 这就是“标量乘法”的核心:用二进制不断倍点

你现在已经在图里“预计算”出了:

它们对应二进制权重:

1,2,4,8

所以任意 kkk 都能写成二进制:

算法上就是Double-and-Add

  • 从最高位往低位扫:每一位都做一次Double(结果翻倍)

  • 如果该位是 1,再做一次Add(把对应的加进去)

举个直接用图里点的例子:
如果,那

13G=8G+4G+G

你先用倍点得到 8G,再把 4G 和 G依次加进去就行。


3) 图里“负号”为啥这么重要?

因为椭圆曲线的加法规则是:

  • 直线与曲线的第三个交点,得到的是“和的相反数”

  • 所以最后要做一次关于 x 轴的翻转(绿色箭头)才能得到真正的和

这就是图里每次都会出现 −2G,−4G,−8,然后再翻成 2G,4G,8G 的原因。

下面我用一个**玩具椭圆曲线(小素数域)**把图里的 Double-and-Add 真正算一遍,让你看到每一步的点坐标怎么变。


0)我们要算什么?

椭圆曲线里的标量乘法:给定点 P 和整数 n,计算

直接加 n−1 次太慢,所以用Double-and-Add(倍加法)

  • Double:倍点 Q←2Q

  • Add:如果该二进制位是 1,就累加 R←R+Q


1)点加/倍点公式(在有限域上)

设曲线:

单位元是无穷远点 O(相当于“0”)。

点加

(当​,且不是互为相反点)

除法在模 p下就是乘以逆元:

倍点

然后同样算 x3,y3​。


2)选一个“玩具曲线”和点

我们选素数 p=211,曲线:

取点:

P=(152,176)

它确实在曲线上,因为:

  • 左边

  • 右边


3)按照图里的例子:算 151P

先把 151 写成二进制:

所以:

这正对应图里气泡说的:中间结果像 16P+4P+2P+P,最后再补一个 128P。


4)先用“不断倍点”得到 P,2P,4P,…,128P

从 P 一直倍点(每次Double)得到:

  • P=(152,176)

  • 2P=(167,141)

  • 4P=(73,120)

  • 8P=(102,101)

  • 16P=(50,24)

  • 32P=(44,48)

  • 64P=(90,12)

  • 128P=(83,203)

(这些都是真按上面的模逆+公式算出来的。)


5)真正执行 Double-and-Add(从低位到高位,和图的风格一致)

151 的二进制从最低位到最高位是:

[1,1,1,0,1,0,0,1]

流程:初始化 R=O,当前倍数点 Q=P。每处理一位:

  • 若 bit=1:R←R+Q

  • 然后 Q←2Q(准备下一位)

下面是每一步的实际点坐标

位ibit当前是否加进 R新的 R
01P=(152,176)R=(152,176)
112P=(167,141)R=(85,160)
214P=(73,120)R=(111,105)
308P=(102,101)不加R=(111,105)
4116P=(50,24)R=(47,63)
5032P=(44,48)不加R=(47,63)
6064P=(90,12)不加R=(47,63)
71128P=(83,203)R=(31,93)

因此最终:

顺带一提:图里气泡的“中间结果”

在这个玩具曲线上确实就是:

然后最后再加 128P 得到 151P。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 11:24:36

uTinyRipper 终极指南:快速掌握 Unity 资产提取技巧

uTinyRipper 终极指南:快速掌握 Unity 资产提取技巧 【免费下载链接】UtinyRipper GUI and API library to work with Engine assets, serialized and bundle files 项目地址: https://gitcode.com/gh_mirrors/ut/UtinyRipper uTinyRipper 是一款专业的 Unit…

作者头像 李华
网站建设 2026/4/20 18:46:38

GPT-OSS-20B能否用于外交辞令生成?政治敏感性分析

请提供与功率电子、嵌入式系统、音频硬件、电源管理、数字信号处理、ADC/DAC、MOSFET驱动、PFC电路、音频放大器设计等相关技术主题的标题,我将严格按照指定框架为您生成符合要求的专业技术分析文章。创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

作者头像 李华
网站建设 2026/4/20 3:07:10

LangChain年度报告:AI智能体2026,从概念到实战的技术蜕变!

简介 LangChain 2026报告显示,AI智能体已从概念走向大规模应用,57%企业已投产,大公司采用率高达67%。客户服务(26.5%)和数据分析(24.4%)是主要场景,质量(32%)和延迟(20%)是最大挑战。89%组织部署可观测性,超75%采用多模…

作者头像 李华
网站建设 2026/4/18 8:23:20

Kotaemon医院挂号指引:就诊流程智能导航

Kotaemon医院挂号指引:就诊流程智能导航在如今医疗资源日益紧张、就医流程复杂的背景下,患者常常面临“看病难”的问题——不是病难治,而是流程太绕。排队时间长、科室不熟悉、材料准备不全……这些非医疗因素极大影响了就医体验。有没有一种…

作者头像 李华
网站建设 2026/4/22 14:34:09

FaceFusion镜像支持按需计费模式?随用随停更省钱

FaceFusion镜像支持按需计费模式?随用随停更省钱 在短视频创作、影视特效和数字人开发日益火热的今天,AI换脸技术早已不再是实验室里的“黑科技”,而是实实在在被广泛使用的生产力工具。然而,高性能往往意味着高成本——想要流畅运…

作者头像 李华
网站建设 2026/4/19 10:31:24

15、Windows PowerShell命令使用指南

Windows PowerShell命令使用指南 1. 验证Scripts驱动器的移除 若要验证是否已成功移除 Scripts 驱动器,可使用以下命令: set-location Scripts:执行此命令后,你会看到如下错误信息,这表明系统中已不存在 Scripts 驱动器: Set-Location : Cannot find drive. A d…

作者头像 李华