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

2019-04-26  本文已影响0人  星星之火666

完整代码参考链接:密码学算法之 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)
上一篇 下一篇

猜你喜欢

热点阅读