我正在NIST指定的曲线“ p192”上执行椭圆曲线点算术运算。为了进行测试,我采用了NIST常规文档中所示曲线p192的示例点。对于点的加法和点的加倍,我得到了正确的答案,但是对于标量乘法,我的答案是不正确的。由于这个原因,我无法确定是否
$ k^{-1}(kP) = P $
Run Code Online (Sandbox Code Playgroud)
哪里
$ k^{-1}.k = 1 mod p $
Run Code Online (Sandbox Code Playgroud)
请帮助我了解我在哪里犯错。
package a;
import java.math.BigInteger;
import java.security.spec.ECPoint;
public class ScalarMultiply {
private static final BigInteger ONE = new BigInteger("1");;
static BigInteger TWO = new BigInteger("2");
static BigInteger p = new BigInteger("6277101735386680763835789423207666416083908700390324961279");
public static ECPoint scalmult(ECPoint P, BigInteger k){
ECPoint R =P,S = P;
int length = k.bitLength();
//System.out.println("length is" + length);
byte[] binarray = new byte[length];
for(int i=0;i<=length-1;i++){
binarray[i] = k.mod(TWO).byteValue(); …Run Code Online (Sandbox Code Playgroud)