椭圆曲线多倍点运算的实现:有多种方法,下面只说二进制展开法,从左至右
输入:点P,l bits 的整数k二进制展开为[l,…1],l表示左边起 第1个为1的bit
输出:Q=[k]P
1:第l bit时:置Q=P
2:for (i=l-1; i>0; i++)
{
Q=[2]Q
if(i==1)
{
Q=Q+P
}
}
3:输出Q
例如:
K=00010110
K4 Q=P;
K3 Q=2P;
K2 Q=2Q=4P;
Q=Q+P=5P
K1 Q=2Q=10P;
Q=Q+P=11P
K0 Q=2Q=22P
即[K]P=[22]P