Да, это правильно, закрытый ключ EC - это просто число. Если вы распечатаете PrivateKey
, вы увидите координаты X и Y соответствующего открытого ключа.
Например, допустим, сгенерирована следующая пара ключей (secp256r1
):
Закрытый ключ EC:
1b9cdf53588f99cea61c6482c4549b0316bafde19f76851940d71babaec5e569
Открытый ключ EC:
0458ff2cd70c9a0897eb90a7c43d6a656bd76bb8089d52c259db6d9a45bfb37eb9882521c3b1e20a8bae181233b939174ee95e12a47bf62f41a62f1a20381a6f03
Мы подключаем байты секретного ключа к вашей функции:
BigInteger priv = new BigInteger("1b9cdf53588f99cea61c6482c4549b0316bafde19f76851940d71babaec5e569", 16);
PrivateKey privateKey = getPrivateKeyFromECBigIntAndCurve(priv, "secp256r1");
System.out.println(privateKey);
и распечатать его:
EC Private Key [91:05:8a:28:94:f9:5c:cb:c4:34:b8:69:e4:39:d4:57:59:c7:51:35]
X: 58ff2cd70c9a0897eb90a7c43d6a656bd76bb8089d52c259db6d9a45bfb37eb9
Y: 882521c3b1e20a8bae181233b939174ee95e12a47bf62f41a62f1a20381a6f03
Как видите, если вы объедините 04
+ X + Y, вы получите оригинальный открытый ключ , (04
- несжатый тег точки EC).