快速指数运算:平方-乘算法

本文介绍了RSA加解密中指数运算的优化方法——平方-乘算法。当指数非常大时,传统的直接计算方式运算量巨大。平方-乘算法通过将指数转换为二进制形式,逐位处理,显著降低了计算复杂度。举例说明了如何使用该算法计算x的10次方,展示了计算量的对数级下降,提高了效率。
摘要由CSDN通过智能技术生成

RSA 加解密中存在指数运算 x a x^a xa
解密过程中运算的指数a非常大,通常会大于等于1024 bit。

一般方法

直接计算 x a x^a xa的值, 即xxx…需要的运算量非常大不实用。

平方-乘算法

设y的初值为x,将a写成二进制形式即0001010…。接下来从左到右数a的每一bit,第一个1不算,从第一个1开始后面遇到0就 y < = y 2 y <= y^2 y<=y2,遇到1就 y < = y ∗ x 2 ∗ , y < = y ∗ x y <= y*x^2*,y<=y*x y<=yx2,y<=yx,一直到最后y值即为结果。

举一个例子,计算 y = x 10 y = x^{10} y=x10

将指数a表示为 二进制形式 1010( a 0 a 1 a 2 a 3 a_0a_1a_2a_3 a0a1a2a3
1: y < = x y <= x\quad\quad\quad\quad\quad\quad\quad\quad y<=x; a0=1,初始化y=x
2: y < = y 2 = x 2    y <= y^2 = x^2\quad\quad\quad\quad\quad\,\, y<=y2=x2; a1=0,平方
3: y < = y 2 = ( x 2 ) 2 = x 4       y <= y^2 = (x^2)^2 = x^4\quad\,\,\,\,\, y<=y2=(x2)2=x4; a2=1,平方后补乘x
   y < = y ∗ x = x 4 ∗ x = x 5 \quad\,\, y <= y*x=x^4*x = x^5\quad\quad y<=yx=x4x=x5
4: y < = y 2 = ( x 5 ) 2 = x 10     y <= y^2 = (x^5)^2 = x^{10}\quad\,\,\, y<=y2=(x5)2=x10; a1=0,平方

通过观察看出,计算量对数下降。
注意<=符号代表y值是递推关系,即: y i + 1 = y i y_{i+1}=y_i yi+1=yi

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

气血龙渊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值