Исключение в потоке "main" java.lang.ArrayIndexOutOfBoundsException: 12 в классе PointMultiplication

Я работаю для генерации умножения точек в классе ECDSA. Я использую метод окна для PM Scalar.

Алгоритм метода окна

Вот мой код

public class PointMultiplication {

private BigInteger X;
private BigInteger Y;
private BigInteger Z;
private BigInteger zinv;
private static BigInteger zero = BigInteger.ZERO;
private boolean infinity;

//Nilai yang dihitung terlebih dahulu (precomputed points)
static PointMultiplication[] precompute = {};


 public PointMultiplication Scalar(BigInteger kin) {
    String K = kin.toString(16);
    PointMultiplication q = new PointMultiplication(zero, zero, null);
    int a = Integer.parseInt(K.substring(0, 1), 16);
    //jika d1>0, q = d1.P (precomputed value)
    if (a > 0) {
        q = precompute[a];
    }
    // untuk i=1 ke n
    for (int i = 1; i < K.length(); i++) {
        // q =2^4P=16P=DoublePoint(DoublePoint(DoublePoint(DoublePoint(q)))).
        q = q.DoublePoint();
        q = q.DoublePoint();
        q = q.DoublePoint();
        q = q.DoublePoint();
        //Jika di>0, q = q+diP (precomputed value)
        int di = Integer.parseInt(K.substring(i, i + 1),16);
        if (di>0) {
            q = q.AddPoint(precompute [di]);
            }        
        }
        return q;

Выход:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 12
    at PointMultiplication.Scalar(PointMultiplication.java:173)
    at ECDSA.Sign(ECDSA.java:58)
    at ECDSA.main(ECDSA.java:146)

Ошибка в precompute[a], я использую проективные координаты.

0 ответов

Другие вопросы по тегам