我试图在Matlab中实现基于素数域上的椭圆曲线的认证协议。我已经成功完成了点加法和点乘法,但在计算以下步骤时我遇到了问题: (大写字母是曲线上的点,小写字母是整数标量)
((y^-1)T4-T2)(rs^-1) = x1P
((y^-1)T5-x1T3)(rs^-1) = X2
我应该计算
y^-1
作为
ModInverse(y , prime)? % the multiplicative inverse of y mod prime
另外,我应该如何进行减法?
nT2 = T2;
nT2{2} = mod(-nT2{2}, prime);
(取消点的y坐标)mod prime,然后在nT2
上添加另一个点
答案 0 :(得分:0)
我可以帮助你找到y的负面坐标。我正在用玩具示例解释:
总和= [673 146] %现在要转换sum的第二个元素,即y坐标,请执行以下操作。sum(1,2)= -sum(1,2)%这将取消第1行sum的第2个元素并将结果存储为sum。 %现在要执行减法,请执行以下操作。假设你的加数是N1 = [6,5]并且augend是总和,因此,这两者的差异是......
差异= addell(N1,sum,a,b,p) %其中a,b和p是ECC的参数。 %Thaat是a和b是常数,p是ECC的主要模数。例如,ECC是y ^ 2 = x ^ 3 + a * x + b mod p
希望这足以满足你的第二个问题。