Как импортировать биткойн-секретный ключ в BigInteger? - PullRequest
0 голосов
/ 16 октября 2019

Я использую следующие коды, чтобы попытаться импортировать закрытый ключ биткойна и вычислить открытый ключ. Вычисленный ECPublicKey не равен bitcoinPublicKey. Как исправить?

string bitcoinPrivateKeyStr = "cVnb9S9GgHxsBxfaApvGnWvfwqXRYdV8f1Q2CkQeBa4EsWTNmsGS";
BitcoinSecret bs = new BitcoinSecret(bitcoinPrivateKeyStr);
byte[] bitcoinPrivateKeyBytes = bs.PrivateKey.ToBytes();
byte[] bitcoinPublicKeybytes = bs.PubKey.Decompress().ToBytes();

X9ECParameters curve = SecNamedCurves.GetByName("secp256k1");
ECDomainParameters domain = new ECDomainParameters(curve.Curve, curve.G, curve.N, curve.H);
BigInteger BCPrivateKeyBI = new BigInteger(bitcoinPrivateKeyBytes);
Org.BouncyCastle.Math.EC.ECPoint q = domain.G.Multiply(BCPrivateKeyBI);
ECPrivateKeyParameters ECPrivateKey = new ECPrivateKeyParameters(BCPrivateKeyBI, domain);
ECPublicKeyParameters ECPublicKey = new ECPublicKeyParameters(q, domain);
AsymmetricCipherKeyPair KeyPair = new AsymmetricCipherKeyPair(ECPublicKey, ECPrivateKey);

1 Ответ

0 голосов
/ 18 октября 2019
BigInteger BCPrivateKeyBI = new BigInteger(1, bitcoinPrivateKeyBytes);
...