請提供使用BouncyCastle的庫展示瞭如何橢圓曲線上加兩個點的例子。橢圓曲線加密
我嘗試下面的代碼,但我沒有得到這理論上應該發生同樣的結果。
X9ECParameters x9=NISTNamedCurves.getByName("P-224");
ECCurve curve=x9.getCurve();
ECFieldElement x1=new ECFieldElement.Fp(new BigInteger("10"), new BigInteger("8"));
ECFieldElement y1=new ECFieldElement.Fp(new BigInteger("10"), new BigInteger("9"));
ECPoint.Fp p1=new ECPoint.Fp(curve, x1, y1);
ECFieldElement x2=new ECFieldElement.Fp(new BigInteger("10"), new BigInteger("5"));
ECFieldElement y2=new ECFieldElement.Fp(new BigInteger("10"), new BigInteger("6"));
ECPoint.Fp p2=new ECPoint.Fp(curve, x2, y2);
p2=(ECPoint.Fp) p1.add(p2);
System.out.println(p2.getX().toBigInteger()+" "+p2.getY().toBigInteger());
而且我也沒明白什麼價值是在ECFiledElement
提供第一BigInteger
。
謝謝,我們試圖做的是,乘以1或-1的橢圓曲線點。即使我們乘以-1,我們也得到了相同的點,而不是那個點的複製...類似地,我們嘗試添加,但我們沒有得到相同的結果... –
添加兩個ECPoint的公式是:給定p(x1,y1)和Q(x2,y2),則x3 = slope-x1-x2並且y3 = -y1 + slope(x1-x3) –
您的示例點無效,因此自然對它們執行橢圓曲線運算不會產生預期的結果。再次,你不能簡單地組成座標(x,y),並期望它們在特定的曲線上。 –