Как получить Public ECDSA Key из Private ECDSA Key на Java

159
02 февраля 2018, 21:20

Подскажите пожалуйста как получить Public ECDSA Key из Private ECDSA Key на Java Android. Использую org.bouncycastle

Для проверки использую этот ресурс http://gobittest.appspot.com/Address Например ввожу Private ECDSA Key

18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725

Должен получить

0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6

Буду благодарен за любые советы.

Answer 1

Кроме приватного ключа должно быть известно имя эллиптической кривой, которая использовалась. Так как в вашем примере есть ответ для проверки, то можно вычислить, что использовалась кривая secp256k1:

private static X9ECParameters curve = ECNamedCurveTable.getByName("secp256k1");
private static ECDomainParameters domain = new ECDomainParameters(
        curve.getCurve(), curve.getG(), curve.getN(), curve.getH());
public static byte[] toPublicKey(byte[] privateKey) {
    BigInteger d = new BigInteger(privateKey);
    ECPoint q = domain.getG().multiply(d);
    ECPublicKeyParameters publicParams = new ECPublicKeyParameters(q, domain);
    return publicParams.getQ().getEncoded(false);
}
READ ALSO
Как сделать переинициализацию Swiper внутри Magnific Popup?

Как сделать переинициализацию Swiper внутри Magnific Popup?

ЗдравствуйтеИмеется галерея модальных окон Magnific Popup

189
Перенос кода с Jquery на нативный JS

Перенос кода с Jquery на нативный JS

Есть часть кода на jQuery, который без проблем работает:

248
Как упростить конструкцию на PHP?

Как упростить конструкцию на PHP?

Например, сначала просто определить массив нужных полей, затем заполнить их из $_POST, и передать дальшепроверять что $ins это массив смысла нет,...

220