Можете ли вы выполнять основные операции EC в Java 7 без сторонней библиотеки?

#java #elliptic-curve

#java #эллиптическая кривая

Вопрос:

Java 7 поставляется с SunEC, который обеспечивает операции ECDH и ECDSA. Я пытался выполнить основные операции EC (сложение точек, скалярное умножение).

Я начинаю с

 ECParameterSpec p256 = NamedCurve.getECParameterSpec("secp256r1");
ECPoint generator = p256.getGenerator();
BigInteger scalar = new BigInteger("23"); 
 

Но оттуда я не вижу следующего шага. Нет ECPoint.scalarMultiply() или ECPoint.add() или EllipticCurve.multiply() .

Я что-то упускаю, или ответ просто «вы не можете сделать это без сторонней библиотеки?»

Ответ №1:

Вы не можете сделать это напрямую без сторонней библиотеки. Я думаю, что ситуация с эллиптическими кривыми в JCE в основном аналогична ситуации с RSA. Классы представляют экземпляры различных ключей и кодировок. Вы можете переключаться между кодировками и спецификациями ключей с помощью KeyFactory, вы можете генерировать открытые и закрытые ключи с помощью KeyPairGenerator и т. Д. Но точно так же, как нет RSAPublicKey.exponentiate(), также нет ECPoint.add() . Эти вещи происходят под капотом в классах Signature, KeyAgreement и Cipher.

Комментарии:

1. Но есть BigInteger.modPow() . Я надеялся на что-то подобное, даже если не в JCE.