我正在搜索有关所谓的“ Strauss-Shamir方法”的信息,以在椭圆曲线上进行标量乘法。这是一种在log 2 (k1 · P + k2 · Q
)的加法和加倍运算中计算k
的方法,其中k1, k2 < k
。
不幸的是,虽然此算法在左右中间被引用,但在任何地方都没有引用 actual 算法(而且,我敢于希望它的分析)。有没有人可以向我解释,或者至少给我有关伪代码/分析的链接?
非常感谢!
答案 0 :(得分:2)
要将数字 P 与 n 位标量 k 相乘,可以根据< strong> k 。假设 k = 9 。用二进制表示,即1001
,您可以像这样计算 9P :
R=0
R=R*2+P //the most significant '1' bit
R=R*2 //next bit is 0
R=R*2 //next bit is 0
R=R*2+P //next bit is 1
施特劳斯-沙米尔(Shauss-Shamir)技巧只是通过在链内而不是链外进行加法来计算 aP + bQ 。假设以a=1001
和b = 0011`的二进制形式表示。然后我们就这样做:
R=0
R=R*2+P //bits from a,b = 1,0
R=R*2 //bits from a,b = 0,0
R=R*2+Q //bits from a,b = 0,1
R=R*2+P+Q //bits from a,b = 1,1
如果您预先计算了 P + Q ,那么这不会比一次乘法花费的时间长得多。