美文网首页
sm2 国密算法 中 常数 乘以 点坐标 函数 详解

sm2 国密算法 中 常数 乘以 点坐标 函数 详解

作者: 星星之火666 | 来源:发表于2019-04-26 21:49 被阅读0次

    完整代码参考链接:密码学算法之 SM2国密算法

    • 部分代码:
        def oval_multiply(self,k,G):
            """
            椭圆曲线上的点乘以常数 k
            :param k: int 型 k*G 中的 k
            :param G: 生成元,基点
            :return: 相乘之后的点
            """
            # if k==1:
            #     return G   # 只有 k 取 1 时,才有这种可能
    
            if k==2:
                return self.oval_same_add(G)
    
            if k==3:
                return self.oval_diff_add(G,self.oval_same_add(G))
    
            if k%2==0:
                return self.oval_same_add(self.oval_multiply(k//2,G))  # return 里只能有一个 oval_multiply 函数,两个及以上很有可能出错,进入无限循环
    
            if k%2==1:
                return self.oval_diff_add_near(self.oval_multiply(k//2,G),G)
    
    • 递归函数详解:(这里显示了一个通常的递归函数过程伪代码)


      递归函数执行过程详解
    • 本例中 的 k=13 可以按如下思路进行分解,其中 左边 虚线部分,是 递归函数 中 k 的取值列表,递归函数是由 3G -> 6G -> 13G 来计算 13*G 这个 常数乘以点坐标的。


    相关文章

      网友评论

          本文标题:sm2 国密算法 中 常数 乘以 点坐标 函数 详解

          本文链接:https://www.haomeiwen.com/subject/smkfnqtx.html