如何在易趣网上建立并维护网站,同时成功接入支付宝支付功能?
摘要:易趣网网站建设与维护,wordpress接入支付宝,打不开网页但是有网络,网站规划与建设书前两节我们探讨了抽象代数的重要概念:有限域,然后研究了基于椭圆曲线上点的怪异”“操作&am
易趣网网站建设与维护,wordpress接入支付宝,打不开网页但是有网络,网站规划与建设书前两节我们探讨了抽象代数的重要概念#xff1a;有限域#xff0c;然后研究了基于椭圆曲线上点的怪异”“操作#xff0c;两者表面看起来牛马不相及#xff0c;实际上两者在逻辑上有着紧密的联系#xff0c;简单来说如果我们在椭圆曲线上取一点G,然后让它跟自己做”“操作…前两节我们探讨了抽象代数的重要概念有限域然后研究了基于椭圆曲线上点的怪异”“操作两者表面看起来牛马不相及实际上两者在逻辑上有着紧密的联系简单来说如果我们在椭圆曲线上取一点G,然后让它跟自己做”“操作那么所得结果形成的集合就会构成有限域。
首先我们先给定一个有限域F(103){0, 1, … 102}, 同时回忆一下我们前面讲过作用在有限域上的“和”*两种操作其实对应在求余基础上普通的加法和乘法由此我们判断有限域中某个点是否在给定椭圆曲线y ^ 2 x ^ 3 7上时首先把该点的x,y坐标代入椭圆曲线方程同时在求余的基础上判断左右两边是否相等例如判断点(17, 64)(这里x,y坐标的值都从有限域F(103)中获取)是否在曲线上我们做如下计算 y ^ 2 (64 ^ 2) % 103 79, x ^ 3 7 (17 ^ 3 7 ) % 103 79 由于左右两边计算后取值相同因此点(17, 64)在曲线上。
我们把有限域的“和” * 两种运算跟上一节我们提到的椭圆曲线上点的操作结合起来就能起到加密效果这里要注意我们不要把两种操作混淆因为他们对应的符号看起来一样但实际对应的运算不一样。
首先我们把上面提到的有限域点在椭圆曲线上的判断逻辑用代码实现一下看看 将有限域的点输入到椭圆曲线需要注意的是在椭圆曲线里执行和*两种运算时它会自动转换为
有限域定义的__add__ 和 __mul__运算注意到即使运算操作的逻辑变了但是判断点是否在椭圆曲线上
依然是判断椭圆曲线对应公式的两边是否相等
a LimitFieldElement(0, 223)
b LimitFieldElement(7, 223)
x LimitFieldElement(192, 223)
y LimitFieldElement(105, 223)
p1 EllipticPoint(x, y, a, b)
print(fElliptc Point over F_223 is {p1})上面代码运行后所得结果为 Elliptc Point over F_223 is EllipticPoint(x:LimitFieldElement_223(192),y:LimitFieldElement_223(105),a:LimitFieldElement_223(0), b:LimitFieldElement_223(7))
这里需要注意在执行EllipticPoint(x, y, a, b)这条语句时它对应的__init__函数会被执行里面会对输入参数执行如下运算
if y ** 2 ! x ** 3 a * x b:这里相应操作例如 “**”, “*”, “” , !对应到有限域对象中的_pow_, _mul_ , _add_, _ne_这几个重载函数。
现在来点烧脑的上一节我们推导了椭圆曲线上给定两点如何得出他们执行运算后所得的第3点在算法中执行了一系列普通加减乘除运算现在我们把这些运算全部转换为有限域上对应的运算所得结果依然成立例如给定两点P1(x1,y1), P2(x2, y2),要获得P3 P1 P2,我们在上一节执行了如下运算
s (y2 - y1)/(x2 - x1)
x3 s ^ 2 - x1 - x3
y3 s * (x1 - x3) - y1上面的减法要对应到LimitFiniteField类的__sub__ ”_truediv_“等逻辑实现。这里可以体会到我们把普通的加减乘法运算换成带求余操作的运算后原有结论依然成立这就是抽象代数的强大作用。
