Исключение в потоке "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], я использую проективные координаты.