Как получить открытый ключ из закрытого ключа ECDSA на Java с помощью Bouncy Castle?

Я прочитал Как получить открытый ключ из закрытого ключа ECDSA в OpenSSL?

и хочу сделать то же самое, но на Java с помощью Bouncy Castle.

Я также видел Bouncy Castle ESCDA Создание открытого ключа из закрытого ключа но это не помогло.


person Thomas Von Panom    schedule 04.11.2015    source источник


Ответы (1)


взгляните на следующий код, это С#, но в java он похож. в этом примере закрытый ключ задается как строка в кодировке base64, а также возвращается строка в кодировке base64. прокомментированные ключевые параметры работают, поэтому используйте этот, если вы хотите иметь ключ и кривую.

private static readonly Org.BouncyCastle.Asn1.X9.X9ECParameters curve = Org.BouncyCastle.Asn1.Sec.SecNamedCurves.GetByName("secp256r1");
private static readonly Org.BouncyCastle.Crypto.Parameters.ECDomainParameters domain = new Org.BouncyCastle.Crypto.Parameters.ECDomainParameters(curve.Curve, curve.G, curve.N, curve.H);
public string GetPublicKey(string privKey)
{
      Org.BouncyCastle.Math.BigInteger d = new Org.BouncyCastle.Math.BigInteger(Convert.FromBase64String(privKey));
      //var privKeyParameters = new Org.BouncyCastle.Crypto.Parameters.ECPrivateKeyParameters(d, domain);
      Org.BouncyCastle.Math.EC.ECPoint q = domain.G.Multiply(d);
      //var pubKeyParameters = new Org.BouncyCastle.Crypto.Parameters.ECPublicKeyParameters(q, domain);
      return Convert.ToBase64String(q.GetEncoded());
}
person steininger    schedule 12.06.2016